无法将 MAC 地址设置为我选择的任何十六进制

无法将 MAC 地址设置为我选择的任何十六进制

我通过以下方式设置 WiFi 芯片的 MAC 地址:

/sbin/ifconfig wlan0 down                                                          
/sbin/ifconfig wlan0 hw ether ${WIFI_MAC_ADDR}    
/sbin/ifconfig wlan0 up    

假设默认 mac 地址是 98:00:00:00:00:00。如果我将 mac 地址更改为任何仍以 开头的新地址98,则不会出现问题。

但是,如果我将其更改98为任何其他数字,则会出现以下错误:

wlan0: set cur_etheraddr failed
dhd_sysioc_thread _dhd_set_mac_address() failed

为什么?

答案1

第一个八位字节的最低有效位保留为“组位”(多播/广播标志位)。设置了该位的 MAC 地址不是有效的单播地址,因此不能用作 NIC 的 MAC 地址。

因此,在 0x8 的半字节中,这些(偶数)值是合法的:

0x0
0x2
0x4
0x6
0x8
0xa
0xc
0xe

这些(奇数)值是非法的:

0x1
0x3
0x5
0x7
0x9
0xb
0xd
0xf

相关内容