本文章针对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下有什么命令能起到这个模式的作用。

在orangepi-PC, ubuntu mini下使用usb wifi(rtl8188cu/rtl8192cu)的更多相关文章

  1. 天嵌E9平台下进行USB Wifi模块RT3070驱动的移植

    因为项目工作须要,要在天嵌E9平台下实现wifi的点对点,点对多点的传输. Wifi 模块芯片:雷凌3070芯片 嵌入式平台:E9(ARM) 交叉编译环境:arm-none-linux-gnueabi ...

  2. Ubuntu系统下USB转串口的使用

    PC系统是Ubuntu12.04,与路由器开发板之间用USB转串口线连接. 一.硬件连接 确认Ubuntu对USB转串口设备的支持. 1.# lsmod | grep usbserial如果有usbs ...

  3. 【转】 Ubuntu下配置USB转串口及串口工具配置--不错

    原文网址:http://blog.csdn.net/dreambegin/article/details/6985028 注意:默认情况下ubuntu已经安装了USB转串口驱动(pl2303).我的是 ...

  4. linux下的usb转串口的使用(修改)【转】

    环境:Ubuntu 10.10 Server minicom是linux下串口通信的软件,它的使用完全依靠键盘的操作,虽然没有“超级终端”那么易用,但是使用习惯之后读者将会体会到它的高效与便利,下面将 ...

  5. Tex_安装_在Ubuntu系统下

    $\LaTeX$是一个强大的排版软件,在数学公式.表格.甚至是科学绘图方面有着独特优势.本文在Ubuntu系统下,整理Tex安装相关的操作,以为备忘.所引链接都未同作者商量,如有不妥望及时告知. 命令 ...

  6. 在Ubuntu环境下配置Proxmark3(PM3)使用环境

    参考资料:PM3官方Wiki 因为国内网络上大多是在Kali系统上使用PM3的教程(链接1.链接2.链接3),而这些教程的步骤对于Ubuntu系统并不完全适用.所以写下本文,记录我个人的安装经历. 本 ...

  7. Linux(Ubuntu)下安装NodeJs

    用以下命令来升级系统,并且安装一些Node.JS必要的包. Linux(Ubuntu)下安装NodeJs 安装nodeJS之前,如果没有安装g++ make libssl-dev等, 1.更新系统和依 ...

  8. ubuntu系统下,gsl 库链接问题 -undefined reference to `cblas_xxx`

    今天在ubuntu系统下进行程序调试的时候出现以下错误信息: [ %] Linking CXX executable ../test_coco /usr/local/lib/libgsl.so: un ...

  9. Redhat/Ubuntu/Windows下安装Docker

    Redhat/Ubuntu/Windows下安装Docker 什么是Docker Docker是Docker.inc公司开源的一个基于LXC技术之上构建的Container容器引擎,基于Go语言并遵从 ...

随机推荐

  1. 企业DC Windows运维监控规范及C辅助监控开发实战前奏;

    春天来了,小草发芽了,花儿开了,你还在等什么? 人家都自驾游了,ruiy可还是徒步游的,并且还留着汗+油; 什么是生活,我的理解就是跟着gd生,跟着gd活,可是讲到这我又自恋了,人家开二会也没想起我来 ...

  2. 【C语言】-循环结构-for语句

    for语句: for (表达式1;表达式2;表达式3) { 循环语句 } 表达式1 给循环变量赋初值 表达式2 为循环条件 表达式3 用来修改循环变量的值,称为循环步长. for语句的执行流程: 例: ...

  3. loadmore

    实例点击 loadmore.js /* * loadmore.js require jQuery,artTemplate * Butterfly 2013.08.28 */ define(['../u ...

  4. (二) win8+XAML Binding(数据绑定)

    第一次接触Binding是用到listview的时候,ListView中如果要动态显示一些内容,我一开始想的就是动态生成一个item,然后插入... 其实用Binding就不用在代码中涉及listvi ...

  5. [一]初识Json

    JSON 对象{ "name":"张三" , "age":22}JSON 数组{"student": [{ " ...

  6. BootStrap最常用的几个插件(V3.3.0版)

    1.标签页 <!-- Nav tabs --> <ul class="nav nav-tabs" role="tablist"> < ...

  7. Oracle- 日期加减

    加法 select sysdate,add_months(sysdate,12) from dual;        --加1年 select sysdate,add_months(sysdate,1 ...

  8. Serializable在C#中的作用.net中的对象序列化 (转)

    序列化是指将对象实例的状态存储到存储媒体的过程,在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转 换为字节流,然后再把字节流写入数据流,在随后对对象进行反序列化时,将创建出 ...

  9. POJ 1703 Find them, catch them (并查集)

    题目:Find them,Catch them 刚开始以为是最基本的并查集,无限超时. 这个特殊之处,就是可能有多个集合. 比如输入D 1 2  D 3 4 D 5 6...这就至少有3个集合了.并且 ...

  10. ORM之四:调用入口与调用示例

    一.ORM入口封装 结合上一篇文章与这里的DbProvider().Init()方法,就很明显的知道了是创建一个mssql的实例.那么在DbService的泛型方法中显示提供了单表操作与多表linq查 ...