树莓派做路由器 2018.03 (Part 2) hostapd 和 RTL8188CUS 网卡,如何在 Raspbian Stretch/Kernel 4.9.x 下工作?
注意:自从 Raspbian 更新内核到 4.14.x 后,下面说的方法已经不能用了,启动 hostapd 会报错;似乎 https://forum.odroid.com/viewtopic.php?f=146&t=29195#p209268 这里给了一个解法,测试中... 2018.06.07前言:写于 2018.03,分成三篇blog,介绍为了在家里使用 Google Home Mini 而进行的一系列努力;
本文为第二部分,关于用 RTL8188CUS USB 无线网卡启动热点中的坑,使用 Pi 3B 的大可跳过这一部分;注意 RTL 8188/8192 系列USB无线网卡现在仅仅也就是日常可用而已,见最后 "Update"
第一部分:树莓派做路由器 2018.03 (Part 1) 最基础的Hotspot配置知识
第三部分:树莓派做路由器 2018.03 (Part 3) Google 硬件(Home/Wear/Chromecast...)上网配置
RTL8188CUS 是在 lsusb 里看到的名字,它和 RTL8192CU 用的是同一个驱动,8192cu.ko (https://wiki.debian.org/rtl819x#supported-rtl8192cu)
上文提到,AP 的工作原理是 hostapd + Kernel Driver 在数据链路层上同客户机通信完成身份认证;那么如果设备驱动没实现好、或者 hostapd 没有正确地和设备驱动交互都会导致同客户机的通信失败。但在 Raspbian Stretch/Kernel 4.9.x 里,Realtek 网卡驱动和 hostapd 都有问题!!下面是解决方案
- hostapd 无法同 Realtek 网卡驱动通信是老生常谈的故障了;当前最新的 hostapd 是 2.6,patch 方案参考 https://wiki.odroid.com/accessory/connectivity/wifi/wlan_ap
- sudo apt install libnl-3-dev libnl-genl-3-dev libssl-dev
- wget https://w1.fi/releases/hostapd-2.6.tar.gz
- wget https://raw.githubusercontent.com/pritambaral/hostapd-rtl871xdrv/hostapd_2_6/rtlxdrv.patch
- tar zxf hostapd-2.6.tar.gz
- cd hostapd-2.6
- patch -p1 < ../rtlxdrv.patch
- cd hostapd
- cp defconfig .config
- echo CONFIG_LIBNL32=y >> .config
- echo CONFIG_DRIVER_RTW=y >> .config
- make -j 5
- sudo make install
- 如果只配置一个无需密码的开放热点,现在光靠 hostapd 已经可用了;据说在老版本内核网卡驱动下,也能把 WPA2 热点跑起来。但恰恰就是我手里的 4.9.x 内核需要换掉驱动,以支持 WPA2 Hotspot
- sudo apt install raspberrypi-kernel-headers dkms
- git clone https://github.com/pvaret/rtl8192cu-fixes.git
- vi rtl8192cu-fixes/include/rtw_version.h #提高版本号,否则 dkms install 有问题
- sudo dkms add ./rtl8192cu-fixes
Creating symlink /var/lib/dkms/8192cu/1.11/source ->/usr/src/8192cu-1.11
DKMS: add completed. - sudo dkms build 8192cu/1.11
- sudo dkms install 8192cu/1.11
8192cu:
Running module version sanity check.
- Original module
- Found /lib/modules/4.9.59-v7+/kernel/drivers/net/wireless/realtek/rtl8192cu/8192cu.ko
- Storing in /var/lib/dkms/8192cu/original_module/4.9.59-v7+/armv7l/
- Archiving for uninstallation purposes
- Installation- Installing to /lib/modules/4.9.59-v7+/kernel/drivers/net/wireless//
depmod...
Warning: Unable to find an initial ram disk that I know how to handle.Will not try to make an initrd.
DKMS: install completed. - sudo depmod -a
- sudo cp ./rtl8192cu-fixes/blacklist-native-rtl8192.conf /etc/modprobe.d/
在我这里这样就一切OK;可能树莓派刚刚完成重启时去连接热点会出现密码不正确的响应——也许是 driver/firmware 还没有热身完毕?但等2-3分钟就正常了。本系列最后一篇介绍如何让 Google 系列硬件通过这个无线路由上网
附录:其它相关的链接
-
https://github.com/jekader/hostapd-rtl/issues/12
关于 8192cu 的模块加载参数,据说关闭驱动里的能源管理参数后,Wifi热点服务会更稳定 -
http://randomstuffidosometimes.blogspot.com/2016/03/rtl8192cu-and-rtl8188cus-in-station-and.html
https://github.com/desflynn/realtek-8192cu-concurrent-softAP
让 8192 驱动网卡同时跑 STA + AP 模式;貌似是在上述 rtl8192cu-fixes 的基础之上更改 include/autoconf.h 相关的定义即可 -
https://github.com/jekader/hostapd-rtl
300-noscan.patch,不清楚用途
https://github.com/pvaret/rtl8192cu-fixes/issues/85
https://github.com/tuna/collection/issues/73
https://github.com/tuna/collection/issues/79
https://github.com/tuna/collection/issues/103
https://gist.github.com/huiyiqun/9c9b00631768bc5b31971235462eba62
最新评论