全志科技
直播中

corkia

4年用户 657经验值
擅长:嵌入式技术
私信 关注
[资料]

【全志网络专题/Tips】Tina Linux 网络Wi-Fi MAC地址

大家好,我是三颗芋圆,始于LWIP,陷于TCP/IP,忠于80211。

本次tips谈谈Tina网络的MAC地址。

目前Tina系统有多种方式可以查看Wi-Fi的mac地址。

一.如何查看MAC地址
1)直接使用ifconfig命令
ifonfig是linux通用的命令,可以查看mac/ip地址,以及网卡状态,数据TX/RX的首发统计。

PS:初始化过程时从efuse中读取mac地址然后拷贝到一个数组中,ifconfig实际上是从数组中读取的.

所以当我们通过某个工具写mac地址后,如果没有重新开关网卡执行ifconfig是不会更新mac地址的.
2)通过节点读取
  1. root@TinaLinux<span class="hljs-symbol">:/</span><span class="hljs-comment"># cat /sys/class/net/wlan0/address </span>
  2. <span class="hljs-number">40</span><span class="hljs-symbol">:</span><span class="hljs-number">53</span><span class="hljs-symbol">:</span><span class="hljs-number">1</span><span class="hljs-symbol">f:</span><span class="hljs-symbol">f7:</span><span class="hljs-number">6</span><span class="hljs-symbol">e:</span><span class="hljs-number">88</span>
3)如果是xradio系列的话,还可以查看xr_wifi.conf文件
  1. root@TinaLinux<span class="hljs-symbol">:/</span><span class="hljs-comment"># cat /etc/wifi/xr_wifi.conf </span>
  2. <span class="hljs-number">40</span><span class="hljs-symbol">:</span><span class="hljs-number">53</span><span class="hljs-symbol">:</span><span class="hljs-number">1</span><span class="hljs-symbol">f:</span><span class="hljs-symbol">f7:</span><span class="hljs-number">6</span><span class="hljs-symbol">e:</span><span class="hljs-number">88</span>
  3. root@TinaLinux<span class="hljs-symbol">:/</span><span class="hljs-comment"># cat ./overlay/upper/etc/wifi/xr_wifi.conf</span>
  4. <span class="hljs-number">40</span><span class="hljs-symbol">:</span><span class="hljs-number">53</span><span class="hljs-symbol">:</span><span class="hljs-number">1</span><span class="hljs-symbol">f:</span><span class="hljs-symbol">f7:</span><span class="hljs-number">6</span><span class="hljs-symbol">e:</span><span class="hljs-number">88</span>
二.XRADIO的MAC地址写入方式
xradio系列的我司是申请了的,分配时前2个字节是一样的,然后系统会随机分配后两个字节.存在冲突的可能(概率低).
1).从文件获取。
2).从chipid定制。
3).从private分区或是securestorge分区定制。
4).可以驱动加载时带参数:insmod xr829.ko mac_addr=10:22:33:44:55:66(前面不能是11)

PS:指令将key mac地址烧写到flash(所以内核无法直接读取)->uboot传递键值对到env.cfg->传到cmdline->kernel(driver/misc/sunxi-addr-mgt驱动解析)->具体wifi驱动解析->sysfs
三.RTL的MAC地址处理
RTL系列一般是固化到IC中的,如果是模组产可能没有做处理,mac地址都是同一个(所以一般需要dragonSN烧写mac地址).
RTL8723ds:
具体MAC address由客户提供,BT MAC offset 0x44 len 6 byte,假设value是00E04CAABBCC
写入命令:rtwpriv wlan0 efuse_set btwmap,44,CCBBAA4CE000
不过要提请注意,写efuse的时候一定要小心,一旦写错, IC 就可能废掉了,因为 efuse 空间有限,写满了就废掉了。
BT efuse 空间是否写满可以通过“rtwpriv wlan0 efuse_get btableraw”判断。
读取命令:rtwpriv wlan0 efuse_get btfmap
Rtwpriv 常用指令:
1). 查看efuse 内容: rtwpriv wlan0 efuse_get realmap
2). 查看efuse剩余空间: rtwpriv wlan0 efuse_get ableraw
3). 查看efuse对应位内容: rtwpriv wlan0 efuse_get rmap,C1,01 (读出efuse offset 0xc1 值)
4). 写efuse 对应位内容: rtwpriv wlan0 efuse_set wmap,C1, 02 (对efuse offset 0xc1写入值: 02)
5). mac读取: rtwpriv wlan0 efuse_get mac
6). mac 写入: rtwpriv wlan0 efuse_set mac,00E04C123456 (后面值为对应mac address)


更多回帖

发帖
×
20
完善资料,
赚取积分