在orangepi-PC, ubuntu mini下使用usb wifi(rtl8188cu/rtl8192cu)

本文章针对orangepi-pc下的ubuntu,分两部分,分别介绍在ubuntu14.04(trusty)mini下使用usb无线网卡的方式,以及怎样在ubuntu15.10(wily)mini下正确安装usb无线网卡的驱动

 

首先是在ubuntu 14.04下,它的udev本身支持firmware的读取,之所以会无法加载rtl8192cu的firmware是因为orangepi-PC的ubuntu 14.04没有提供firmware

我们需要做的只是从其他地方拷贝firmware到orangepi的/lib/firmware中即可,我是从笔记本上跑的ubuntu中拷贝的firmware

当网卡加载后,因为没有界面,所以我们需要用命令行配置网卡,我使用的方法如下:

1. 更改/etc/network/interfaces,向其中添加如下内容(如果某部分已经存在则略过该部分):  

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

# for wifi
allow-hotplug wlan0
iface wlan0 inet dhcp
  wpa-driver wext
    wpa-conf /etc/wpa_supplicant.conf

2. 更改或创建/etc/wpa_supplicant.conf,下面是一个例子:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1

network={
  ssid="example_server"
  psk="example_password" }

重新拔插usb无线网卡则应该在ifconfig中能够看到wlan0以及其IP地址了

如果想配置其他网络可以:

1. 修改/etc/wpa_supplicant.conf

2. sudo wpa_cli使用交互方式完成配置

 

对于ubuntu 15.10,linux内核3.8以后加入了在内核态加载firmware的支持,因此systemd在v217以后去除了用户太加载firmware的支持

而orangepi到现在(2016年1月6日)仍然使用的是3.4.39内核,该内核不支持内核态加载firmware。而wily(ubuntu 15.10)使用的systemd是v225,不支持用户态加载firmware,因此在orangepi+wily的情况下,firmware是无法加载的。

要解决这个问题,我们需要使用udev的rule文件调用外部程序加载firmware

我写了这样一个程序来加载firmware,代码地址为:https://github.com/freason/orangepi_wily_firmware_loader.git

使用方法如下:

1. 修改: “/lib/udev/rules.d/50-firmware.rules”这个文件,把

  SUBSYSTEM=="firmware", ACTION=="add", ATTR{loading}="-1"

这一行换成:

  SUBSYSTEM=="firmware", ACTION=="add", RUN+="firmware $env{FIRMWARE} /sys/$env{DEVPATH}"

2. 用arm-gcc编译firmware.c生成名为firmware的可执行文件,并把这个文件拷贝到orangepi的/lib/udev目录下

  这里有两种方式,一种是直接在orangepi下编译,另外一种是使用arm-linux-gnueabi-gcc进行交叉编译。我使用的第二种方式,github上提供了我编译的版本

3. 拷贝firmware到orangepi的/lib/firmware下,orangepi wily没有提供firmware所以我们必须手动从其他地方拷贝firmware过来,我是从pc的UBUNTU上拷贝过来的

firmware.c工作的原理:

插入usb wifi后,rtl8192cu的驱动会请求firmware,这时内核会创建两个文件loading和data。其中loading为加载的状态,1为正在加载,0为加载完成,-1为错误,我们向loading文件里写入这三个字符串即可通知内核相应的消息。data为数据缓冲,我们将firmware数据写入该文件,内核会从这个文件中读取firmware数据。

注意:写loading这个文件不能使用bash中的echo+重定向,我试过,没成功。我没有仔细研读fopen的代码,但firmware.c中打开文件时使用的模式为"we",其中e表示O_CLOEXEC,参见http://linux.die.net/man/3/fopen,不知bash下有什么命令能起到这个模式的作用。

转载于:https://www.cnblogs.com/astreye/p/5104269.html

要下载rtl8192cu驱动的源码,可以按照以下步骤进行: 1. 打开你的浏览器并进入RTL8192CU驱动源码下载页面。可以在互联网上搜索相关的关键词,比如“RTL8192CU驱动源码下载”。 2. 选择一个可靠的网站来下载源码。可以选择官方网站或者其他知名的软件下载网站。 3. 在下载页面找到符合你操作系统需求的源码版本。确保你选择的源码对应你的操作系统和硬件。 4. 点击下载按钮开始下载源码。大多数情况下,源码会被压缩成一个.zip或.tar.gz文件。下载完成后,解压源码文件到一个你可以方便访问的目录。 5. 打开源码目录,你可以看到包含驱动程序的各个文件和文件夹。其中,主要包括.c和.h文件,这些文件是源码的核心部分。 6. 如果你打算编译和安装驱动程序,你需要安装开发环境和编译工具。根据你的操作系统,可以使用不同的工具来进行编译和安装。比如在Ubuntu上,你可以使用gcc和make命令来编译源码并生成驱动程序。 7. 按照README或INSTALL文件中的说明来编译和安装驱动程序。这些文件通常会提供详细的步骤和命令,帮助你完成编译和安装过程。 8. 如果一切顺利,你应该能够成功编译和安装rtl8192cu驱动程序。在安装完成后,你可以加载驱动并开始使用它。 注意:下载和使用源码需要有一定的编程和系统知识。如果你不熟悉相关的操作或者有特殊需求,建议参考官方文档或寻求专业的技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值