查看: 812|回复: 3

[试用分享] 【Marvell ESPRESSObin】打造WIFI路由器

[复制链接]

22

主题

0

好友

1528

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    开心
    2016-7-19 10:35
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2017-4-12 20:19:08 |显示全部楼层
    救了砖,现在又可以好好折腾一下了。

    今天要折腾一个WIFI路由器,实现WIFI连接并上网,当然还只有命令行方式的操作及配置,没有OPENWRT那样的GUI配置界面,不过配置好了,当作一般的路由器用是没有问题的。

    准备WIFI网卡,手头还有一块WIFI网卡,型号是INTEL N2330,MINI-PCIE接口,刚好合适,见下图

    IMG_20170402_100235.jpg


    这是安装好的无线网卡,接下来要为无线网卡配置驱动,需要重新编译内核。

    官方提供了RTL8192的示例,除了硬件驱动配置不同,其它的都可以依葫芦画瓢,在内核配置里面选择iwlwifi,这个是INTEL系列网卡的配置必选项

    2017-04-12_194918.png


    另外,由于INTEL系列都有自己的私有固件,所以把相关的固件也添加进去,如下图高亮显示处的内容

    2017-04-12_195110.png


    此处指定的主要针对N2230专用的固件,同时指明内核寻找固件的位置。如果不按这样操作,最后在启动时会报告找不到固件的信息,如下
    1. espresso@espresso:~$ dmesg|grep wifi
    2. [    2.353617] iwlwifi 0000:00:00.0: enabling device (0000 -> 0002)
    3. [    2.360109] iwlwifi 0000:00:00.0: Direct firmware load for iwlwifi-2030-6.ucode failed with error -2
    4. [    2.369598] iwlwifi 0000:00:00.0: request for firmware file 'iwlwifi-2030-6.ucode' failed.
    5. [    2.383390] iwlwifi 0000:00:00.0: Direct firmware load for iwlwifi-2030-5.ucode failed with error -2
    6. [    2.392715] iwlwifi 0000:00:00.0: request for firmware file 'iwlwifi-2030-5.ucode' failed.
    7. [    2.409347] iwlwifi 0000:00:00.0: no suitable firmware found!
    复制代码
    其它开源的网卡驱动并不需要指定这一项。

    其它内核选项参照官方的说明添加就可以了,将新内核复制到SD卡上,启动,查看启动信息,观察WIFI网卡配置信息,看是否正确,本人得到信息如下
    1. espresso@espresso:~$ dmesg|grep wifi
    2. [    2.358516] iwlwifi 0000:00:00.0: enabling device (0000 -> 0002)
    3. [    2.366023] iwlwifi 0000:00:00.0: loaded firmware version 18.168.6.1 op_mode iwldvm
    4. [    2.379745] iwlwifi 0000:00:00.0: CONFIG_IWLWIFI_DEBUG disabled
    5. [    2.385268] iwlwifi 0000:00:00.0: CONFIG_IWLWIFI_DEBUGFS disabled
    6. [    2.392128] iwlwifi 0000:00:00.0: CONFIG_IWLWIFI_DEVICE_TRACING disabled
    7. [    2.398492] iwlwifi 0000:00:00.0: Detected Intel(R) Centrino(R) Wireless-N 2230 BGN, REV=0xC8
    8. [    2.407878] iwlwifi 0000:00:00.0: L1 Disabled - LTR Disabled
    9. [    6.028401] iwlwifi 0000:00:00.0: L1 Disabled - LTR Disabled
    10. [    6.036014] iwlwifi 0000:00:00.0: L1 Disabled - LTR Disabled
    11. [    6.036133] iwlwifi 0000:00:00.0: Radio type=0x2-0x0-0x0
    12. [    6.286395] iwlwifi 0000:00:00.0: L1 Disabled - LTR Disabled
    13. [    6.293991] iwlwifi 0000:00:00.0: L1 Disabled - LTR Disabled
    14. [    6.294100] iwlwifi 0000:00:00.0: Radio type=0x2-0x0-0x0
    15. espresso@espresso:~$
    复制代码
    看到N2230的信息了,设备加载是正确的,接下来就可以配置hostapd等信息了。

    安装hostapd软件包,并配置hostapd的配置文件/etc/hostapd.conf,内容如下
    1. espresso@espresso:~$ cat /etc/hostapd.conf
    2. interface=wlan0
    3. driver=nl80211
    4. ssid=espressobinwifi_ap
    5. hw_mode=g
    6. channel=1
    7. espresso@espresso:~$
    复制代码
    现在可以使用命令来测试看是否正确,执行如下命令
    1. sudo hostapd -B /etc/hostapd.conf
    复制代码
    应该看到hostapd启动的相关信息,打开手机,查看附近的AP,应该会发现一个名为espressobinwifi_ap的访问点。

    接下来要将wlan0添加到br0,实现桥接功能,配置的rc.local文件内容如下
    1. espresso@espresso:~$ cat /etc/rc.local
    2. #!/bin/sh -e
    3. #
    4. # rc.local
    5. #
    6. # This script is executed at the end of each multiuser runlevel.
    7. # Make sure that the script will "exit 0" on success or any other
    8. # value on error.
    9. #
    10. # In order to enable or disable this script just change the execution
    11. # bits.
    12. #
    13. # By default this script does nothing.
    14. hostapd -B /etc/hostapd.conf

    15. brctl addbr br0
    16. ifconfig eth0 0.0.0.0 up
    17. ifconfig wan 0.0.0.0 up
    18. ifconfig lan0 0.0.0.0 up
    19. ifconfig lan1 0.0.0.0 up
    20. brctl addif br0 lan0
    21. brctl addif br0 lan1
    22. brctl addif br0 wlan0
    23. ifconfig br0 192.168.22.1


    24. dnsmasq --interface=br0 --dhcp-range=br0,192.168.22.2,192.168.22.199,12h
    25. echo 1 > /proc/sys/net/ipv4/ip_forward
    26. iptables -t nat -A POSTROUTING -o wan -j MASQUERADE
    27. dhclient wan
    28. espresso@espresso:~$
    复制代码
    注意此处不仅将wlan0添加到br0接口,同时也指定了WAN口获取IP地址的方式以及DHCP服务器指定的地址池等信息。

    此处注意,hostapd的启动必须要先于将wlan0接口添加到br0之前,否则会出现如下的错误信息
    1. Apr 12 19:15:59 espresso systemd[1]: Starting /etc/rc.local Compatibility...
    2. Apr 12 19:15:59 espresso rc.local[1177]: can't add wlan0 to bridge br0: Operatio
    3. n not supported
    4. Apr 12 19:15:59 espresso systemd[1]: rc-local.service: Control process e
    5. xited, code=exited status=1
    6. Apr 12 19:15:59 espresso systemd[1]: Failed to start /etc/rc.local Compa
    7. tibility.
    复制代码
    配置应该差不多只需要注意这些问题。

    接下来保存好所有设置,重新启动系统,查看网络配置情况如下
    1. espresso@espresso:~$ ifconfig
    2. br0       Link encap:Ethernet  HWaddr 00:00:00:00:51:81
    3.           inet addr:192.168.22.1  Bcast:192.168.22.255  Mask:255.255.255.0
    4.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    5.           RX packets:1242 errors:0 dropped:8 overruns:0 frame:0
    6.           TX packets:867 errors:0 dropped:0 overruns:0 carrier:0
    7.           collisions:0 txqueuelen:1000
    8.           RX bytes:932545 (932.5 KB)  TX bytes:275981 (275.9 KB)

    9. eth0      Link encap:Ethernet  HWaddr 00:00:00:00:51:81
    10.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    11.           RX packets:3115 errors:0 dropped:0 overruns:0 frame:0
    12.           TX packets:3341 errors:0 dropped:0 overruns:0 carrier:0
    13.           collisions:0 txqueuelen:532
    14.           RX bytes:467419 (467.4 KB)  TX bytes:1250096 (1.2 MB)
    15.           Interrupt:9

    16. lan0      Link encap:Ethernet  HWaddr 00:00:00:00:51:81
    17.           UP BROADCAST MULTICAST  MTU:1500  Metric:1
    18.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    19.           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    20.           collisions:0 txqueuelen:1000
    21.           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

    22. lan1      Link encap:Ethernet  HWaddr 00:00:00:00:51:81
    23.           UP BROADCAST MULTICAST  MTU:1500  Metric:1
    24.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    25.           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    26.           collisions:0 txqueuelen:1000
    27.           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

    28. lo        Link encap:Local Loopback
    29.           inet addr:127.0.0.1  Mask:255.0.0.0
    30.           UP LOOPBACK RUNNING  MTU:65536  Metric:1
    31.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    32.           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    33.           collisions:0 txqueuelen:1
    34.           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

    35. wan       Link encap:Ethernet  HWaddr 00:00:00:00:51:81
    36.           inet addr:192.168.88.224  Bcast:192.168.88.255  Mask:255.255.255.0
    37.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    38.           RX packets:3115 errors:0 dropped:0 overruns:0 frame:0
    39.           TX packets:3341 errors:0 dropped:0 overruns:0 carrier:0
    40.           collisions:0 txqueuelen:1000
    41.           RX bytes:398889 (398.8 KB)  TX bytes:1223368 (1.2 MB)

    42. wlan0     Link encap:Ethernet  HWaddr 00:c2:c6:66:dd:c5
    43.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    44.           RX packets:1241 errors:0 dropped:0 overruns:0 frame:0
    45.           TX packets:880 errors:0 dropped:0 overruns:0 carrier:0
    46.           collisions:0 txqueuelen:1000
    47.           RX bytes:949913 (949.9 KB)  TX bytes:293319 (293.3 KB)

    48. espresso@espresso:~$
    复制代码
    注意WLAN0作为无线接口,是不需要设置IP地址的,因为WAN已从上级路由器获取到了IP地址,同时也对路由表作了配置,现在通过WIFI连接到ESPRESSOBIN上的设备,都应该可以正常睛上网了,下面是使用手机连接到ESPRESSOBIN上并测试的效果图,如下

    Screenshot_2017-04-12-19-40-52.png


    连接到AP后的效果,默认没有设置加密,所以直接就连接上去了,

    Screenshot_2017-04-12-19-41-16.png


    通过DHCP获取到的IP,信号强度是添加了两根天线后的效果,如果没有加天线的话,信号很差。

    Screenshot_2017-04-12-19-41-34.png



    发一张使用手机连接到ESPRESSOBIN并上网打开爱板论坛的效果,由于手机与开发板的距离很近,速度还是很不错的。


    至此,使用ESPRESSOBIN + INTEL N2230来打造一个AP的任务就完成了。

    几点体会, 一是仔细看官方提供的文档,讲得还是很到位的,如果与自己的硬件不相符的地方,适当修改即可。二是编译内核时,如果有些参数一时不能到位,可能需要反复调整、测试,笔者在测试WIFI网卡时,就出现了不能找到INTEL网卡固件的情况,通过查找相关资料及说明,总算是解决了。三是要从系统LOG中去查看相关信息,dmesg总是会告诉你问题在哪里,然后再逐个解决,慢慢总会找到解决办法的。



    回复

    使用道具 举报

    19

    主题

    1

    好友

    3146

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    2017-7-13 09:00
  • 签到天数: 678 天

    连续签到: 2 天

    [LV.9]以坛为家II

    发表于 2017-4-12 21:31:34 |显示全部楼层
    恭喜救砖成功!!!
    回复

    使用道具 举报

    7

    主题

    0

    好友

    330

    积分

    秀才

    Rank: 3Rank: 3

  • TA的每日心情
    奋斗
    2017-5-23 16:15
  • 签到天数: 12 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2017-4-23 14:01:01 |显示全部楼层
    如果没有编译正确 PCI-E 无线网卡的驱动,lspci 能查看到 PCI-E 卡的信息吗?
    我用 lspci 返回没有任何信息。不知道是不是PCI子系统的问题了。
    回复

    使用道具 举报

    7

    主题

    0

    好友

    330

    积分

    秀才

    Rank: 3Rank: 3

  • TA的每日心情
    奋斗
    2017-5-23 16:15
  • 签到天数: 12 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2017-4-23 15:18:09 |显示全部楼层
    我发现是我的 Atheros 网卡的问题,不知道什么原因和 ESPRESSObin 似乎不兼容。
    拆了一台笔记本上的 Broadcom 的卡安上去就正常了,lspci 能看到设备。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /5 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-8-18 22:35 , Processed in 0.117372 second(s), 13 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部