linux无线网卡控制解决方案,嵌入式Linux使用USB无线网卡 ——一种解决方案

一种解决方案就是不使用Linux自带的,使用网上的驱动编译得到rtl8188eu.ko,加载,同时使用wpa_supplicant-0.6.9版本,编译wext驱动方式,这样就可以了,不会提示什么/sys/class/net/wlan0/phy80211/name的问题了。 这样可以使用了,再编译busybox,选中udhc

一种解决方案就是不使用Linux自带的,使用网上的驱动编译得到rtl8188eu.ko,加载,同时使用wpa_supplicant-0.6.9版本,编译wext驱动方式,这样就可以了,不会提示什么/sys/class/net/wlan0/phy80211/name的问题了。

这样可以使用了,再编译busybox,选中udhcpc。

执行udhcpc -i wlan0获取到了可用ip,但是ifconfig没有设置,很奇怪。

网上一搜才知道,http://bbs.csdn.net/topics/390713401

udhcpc无法自动设置IP的问题

回复于: 2015-12-15 09:16:38

udhcpc是一个面向嵌入式系统的非常小的DHCP客户端,字母的缩写微- DHCP -客户端(μDHCPc)。

udhcpc -i eth0

udhcpc只是获取一个IP,我们需要把\busybox-1.1.2\examples\udhcp下的脚本simple.script改名为default.script,放在开发板上的/usr/share/dhcpc/目录下,才能将获取的IP写到指定的网卡中。

simple.script需要拷贝过来:

[root@GK sdcard]# cat udhcp.script

#!/bin/sh

# udhcpc script edited by Tim Riker

RESOLV_CONF="/etc/resolv.conf"

[ -n "$1" ] || { echo "Error: should be called from udhcpc"; exit 1; }

NETMASK=""

[ -n "$subnet" ] && NETMASK="netmask $subnet"

BROADCAST="broadcast +"

[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"

case "$1" in

deconfig)

echo "Setting IP address 0.0.0.0 on $interface"

ifconfig $interface 0.0.0.0

;;

renew|bound)

echo "Setting IP address $ip on $interface"

ifconfig $interface $ip $NETMASK $BROADCAST

if [ -n "$router" ] ; then

echo "Deleting routers"

while route del default gw 0.0.0.0 dev $interface ; do

:

done

metric=0

for i in $router ; do

echo "Adding router $i"

route add default gw $i dev $interface metric $((metric++))

done

fi

echo "Recreating $RESOLV_CONF"

echo -n > $RESOLV_CONF-$$

[ -n "$domain" ] && echo "search $domain" >> $RESOLV_CONF-$$

for i in $dns ; do

echo " Adding DNS server $i"

echo "nameserver $i" >> $RESOLV_CONF-$$

done

mv $RESOLV_CONF-$$ $RESOLV_CONF

;;

esac

exit 0

然后使用udhcpc -i wlan0 -s /mnt/sdcard/udhcp.script,这样就可以自动获取IP并设置使用了。

我这里跟文件系统是不可写的,所以提示了

can't create /etc/resolv.conf-389: Read-only file system

这样的话,dns不能正确使用了。所以还得修改这个东西。脚本中有

RESOLV_CONF="/etc/resolv.conf",修改一下就可以了。

但这样还不够啊,Adding DNS server xxxx,找到了两个dns服务器,但是提示

ping www.baidu.com

ping: bad address 'www.baidu.com'

还得整DNS。

后来发现,系统使用的是/etc/resolv.conf,但我已经把RESOLV_CONF修改到其他地方了,而根文件系统不能直接修改为可写,需要mount -t jffs去挂载。

所以,我选择了链接,使用ln -s xxxx/resolv.conf /etc/resolv.conf,这样只要存在xxxx/resolv.conf,然后udhcpc去修改这个文件就可以了,系统使用/etc/resolv.conf链接到xxxx/resolv.conf,再ping

www.baidu.com,OK,解决了。

[root@GK /]# ping www.baidu.com

rtw_set_ps_mode(): Busy Traffic , Leave 802.11 power save..

rtl8192c_set_FwPwrMode_cmd(): Mode = 0, SmartPS = 0

PING www.baidu.com (115.239.211.112): 56 data bytes

64 bytes from 115.239.211.112: seq=0 ttl=56 time=8.102 ms

64 bytes from 115.239.211.112: seq=1 ttl=56 time=10.396 ms

64 bytes from 115.239.211.112: seq=2 ttl=56 time=8.082 ms

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值