Victor
October 31, 2021, 7:08am
1
環境
** 硬體:BW16
** 前置:按教學更新firmware及設定Arduino IDE
** Board ver: 3.0.11
** IDE: Arduino 1.8.16 / MacOS 10.14.6
步驟
在Arduino IDE上讀取AmebaMDNS → mDNS_On_Arduino_IDE範例
修改無線認證資訊
編譯及上傳
確認在無線基地台內BW16已連線
預期:ping MyAmeba或MyAmeba.local會回應
實際: Unknown host
P.S. 在mDNSPlatform.c內可以看到
// Mandatory function to get hostname
// called when mDNS initialization
char *mDNSPlatformHostname(void)
{
#if LWIP_NETIF_HOSTNAME
return (char *) xnetif[0].hostname;
#else
return "ameba";
#endif
}
直接ping ameba.local則會成功,但是修改return 值後重新編譯並未生效
因為目前需要不只一個BW16,所以需要mDNS可以正常運作
另外,希望可以提供方法修改在無線基地台上的名稱,原因如上
1 Like
Victor
November 16, 2021, 2:27pm
2
Hi @xidameng ,
不知道這個是否也能幫忙一下呢?在board 3.1.0也是一樣的。
ping ameba.local會得到回應但MyAmeba.local則無法,在Arduino IDE上看到的確實是MyAmeba,只是似乎其它host都只看的到ameba.local
但我以為此範例應該是可以接受MyAmeba.local這個我們在程式中指定的位址解析而不是ameba.local。
wyy
November 17, 2021, 8:21am
4
Hi @Victor
我的了解是 MyAmeba._arduino._tcp.local
是一个 DNS service record 的名字,不是一个 hostname 名字,所以不能 ping 到 MyAmeba.local
。
想要用 ping 找的话,需要改的应该是 lwip 里面的 hostname 设置。这个功能现在没有开启
wyy
November 17, 2021, 9:20am
5
如果需要用 mdns service 分辨开发板,linux 上是可以用 avahi-browse -at
搜索并列出所有 mdns service 和 ip 地址,也可以修改 protocol 部分 _arduino._tcp
分辨不同开发板。
Victor
November 26, 2021, 4:43pm
6
Hi @wyy ,
謝謝說明,對於mDNS有些部份想再進一步了解:
如果我們可以設置的目標是MyAmeba,所以會有一個dns record為 MyAmeba._arduino._tcp.local
,那為什麼ameba.local在mdns啟用後可以被解析?
而上述的ameba.local似乎是無法透過修改mDNSPlatform.c來修改為其它值
而lwip的部份我試了一下好像沒有辦法在3.1.0順利使用,修改的部份如下:
修改opt.h的LWIP_NETIF_HOSTNAME為1
lwip_netconf.c中,在netif_set_up之後以及LwIP_init()的最後新增了netif_set_hostname(pnetif, "testhost");
但仍然沒有辦法成功
Victor
November 27, 2021, 3:41am
8
Hi @wyy
感謝,hostname的部份是否可以提供一個method以避免我們需要直接修改程式碼?這會造成在更版的時候需要重新修改
wyy
November 27, 2021, 3:59am
9
Hi @Victor
我没怎么看懂你的意思。
新版本的 hostname 设置是:如果在链接 WiFi 前用户没有提供一个 hostname,就用默认的 Ameba + MAC。
你好,看历史评论,这个解决方法是在连接WIFI前设置hostname,如果hostname是动态变化的,需要在注册mdns的时候动态修改,这个是否支持?
這邊使用的是Arduino SDK,和standard SDK不太一樣