最近买了块官方板的RT5350:
先介绍代码下载,以下命令都是用登录用户执行,无须root:
mkdir openwrt //待会代码下载到此目录下
cd openwrt
svn co svn://svn.openwrt.org.cn/openwrt/trunk //svn下载,svn命令没有的话自行安装
下载结束后显示:
Checked out revision 40618. //大概是这样子,40618可能不一样,因为代码升级的吧
当前目录下有个trunk的目录
更新和安装软件包:
cd trunk/
./scripts/feeds update -a //更新软件包
./scripts/feeds install -a //安装软件包
测试以下配套工作:
make defconfig //检查一下build-essential asciidoc binutils bzip2 gawk gettext \git libncurses5-dev libz-dev patch unzip zlib1g-dev ia32-libs \ lib32gcc1 libc6-dev-i386 这些配套工具有没有安装完整,不然后面编译会出错。出错时只需要按照提示安装对应的工具包
基本的代码到此已经下载结束,接下去到配置和编译,请注意编译过程中需要下载一些安装包,所以期间不能断网。
配置:
cd trunk/
make menuconfig
Target System --->> Ralink RT288x/RT3xxx
Subtarget -------->> RT3x5x/RT5350 based boards
Target Profile ---------->> HAME MPR-A2
注意这里选上:Build the OpenWrt SDK //后面的开发应用软件需要
Luci 配置
编译:
在trunk目录下执行:make V=s //这个过程需要下载东西,我家网速8M,所以不到一个小时就编译好了,期间出了一些
问题,都是配套工具包没有安装。
编译结束后:
在trunk/bin/ramips 目录下有生成的镜像包:
md5sums
openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin
openwrt-ramips-rt305x-root.squashfs
openwrt-ramips-rt305x-uImage.bin
openwrt-ramips-rt305x-vmlinux.bin
openwrt-ramips-rt305x-vmlinux.elf
OpenWrt-SDK-ramips-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2
packages
其中openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin是可以通过网页和TFTP下载更新到开发板上的。
请放心更新,因为更新过程不会把uboot更新,所以出错之后也可以通过uboot命令重新更新,出现升级uboot出错。
OpenWrt-SDK-ramips-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2是我们下一篇编译ipk应用软件
所需要的SDK。
介绍以下trunk目录结构(以下内容为摘录):http://blog.csdn.net/kingvenll/article/details/27545221
bin 生成的镜像都在此目录
---build_dir/host目录是建立工具链时的临时目录
---build_dir/toolchain-*是对应硬件的工具链的目录
---staging_dir/toolchain-* 则是工具链的安装位置
---target/linux/目录里面是各个平台(arch)的相关代码
---target/linux//config-3.10文件就是配置文件了
---dl目录是'download'的缩写, 在编译前期,需要从网络下载的数据包都会放在这个目录下,这些软件包的一个特点就是,会自动安装在所编译的固件中,也就是我们make menuconfig的时候,为固件配置的一些软件包。如果我们需要更改这些源码包,只需要将更改好的源码包打包成相同的名字放在这个目录下,然后开始编译即可。编译时,会将软件包解压到build_dir目录下。
---而在build_dir/目录下进行解压,编译和打补丁等。
---package目录里面包含了我们在配置文件里设定的所有编译好的软件包。默认情况下,会有默认选择的软件包。在openwrt中ipk就是一切, 我们可以使用
升级过后既可以链接上网。WAN链接到路由上,LAN链接到自己电脑上,现在写这篇时就是在用这块开发板上网的。
Openwrt安装USB驱动挂载U盘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
opkg update
opkg install kmod-usb-core
opkg install kmod-usb-ohci #安装usb ohci控制器驱动
#opkg install kmod-usb-uhci #UHCI USB控制器
opkg install kmod-usb2 #安装usb2.0
opkg install kmod-usb-storage #安装usb存储设备驱动
opkg install usbutils #安装了这个后可以用 lsusb
opkg install kmod-fs-ext2 #安装ext2分区支持
opkg install kmod-fs-ext3 #安装ext3分区格式支持组件
opkg install kmod-fs-ntfs #ntfs内核驱动
opkg install mount.ntfs-3g #挂载ntfs助手
opkg install mount-utils #挂载卸载工具
opkg install ntfs-3g #挂载NTFS
opkg install kmod-fs-vfat #挂载FAT
opkg install fdisk #硬盘分区管理工具 |
挂载分区:
1
|
mount -t ext2 /dev/sda1 /mnt/ |
开机自动挂载:
1
|
echo "/dev/sda1 /mnt/ ext2 rw,async,noatime,nodiratime 0 0 ">> /etc/fstab |
usb声卡
kmod-usb-audio - 2.6.32.10-1
kmod-sound-core (2.6.32.10-1)
kmod-input-core (2.6.32.10-1)
2012年7月份左右曾经看到有人把路由器改成网络播放器使用,无奈于时间与精力,事情不了了之,后来也就渐渐淡忘了。一直发展到今年春节期间,意外搞到一部DB120-WG路由器,于是东风再起,重新开始折腾网络收音机。
曾在“第四届大赛”板块发了一个早期近似失败的实验品,也总算是为后来打下基础。
应大家的要求,这里详细地写下刷机过程,原版OpenWrt Backfire 10.03.1系统安装mplayer播放器步骤,Anyradio服务器电台列表读取程序Linux shell 版
1、硬件准备
DB120-WG路由器,USB声卡,一个ADSL设备(如调制解调器,其它路由器),RJ-45标准网线
路由器我试过RG100a-AA,刷好后LED全部错位,按钮不可用,其它正常。只要路由器的CPU是BCM6358,带USB口的都可以刷文中的固件。这样就无需安装下文所述的软件包。
USB声卡不要用Tenx牌子芯片的,效果很差。
2、刷机
(1)、将RJ-45线一水晶头插到路由器的WAN口(LAN4),另一头连接电脑网卡。
(2)、配置电脑本地网卡为固定IP 192.168.1.100,网关192.168.1.1,子网掩码255.255.255.0
(3)、先不要接通路由器电源,按住路由器的RST键不放,打开电源,直到绿色的POWER灯变为红色,说明路由器已经进入CFE工厂设置模式
(4)、浏览器输入http://192.168.1.1/upload.html ,此时应该可以看到“上传固件”(Upload the firmware)字样
(5)、下载本文提到的定制好的固件,上传到路由器
(6)、路由器自动把固件写入RAM,重新对FLASH编程,过程大概10分钟完成。此时TTL接口上将回显编程进度。过程中路由器千万不能断电。
帖子结尾会提供固件下载地址。建议先刷不带CFE的固件,如果刷好后系统无法启动,再刷带CFE的固件。注意:一旦CFE被刷坏,路由器就无法再次通过上诉方法重刷!
3、加入WIFI网络
(1)、浏览器输入192.168.1.1,登陆openwrt设置界面,默认密码admin,进入后先设置SSH密码(可以设为admin,比较方便),然后依次单击network ---》interface ---》WIFI ---》Scan ---》 将列出扫描到的接入点,找到自家路由器发送的信号,单击Join network ,输入无线热点密码,其它一切默认,单击Save,回到 interface 界面,可以看到接口多出WWAN一项。
(2)、确定无误,单击页面右上方红色字体“Unsaved Changes”,单击Apply应用设置,至此netwrok设置完毕。处在局域网里的电脑不一定能上网,但路由器一定可以访问广域网了。
有些朋友曾经问过,平常印象中的路由器都是“发射”信号,怎么还能“接收”信号呢?
换个角度思考,要访问一个网页,就必须先发送HTTP协议头给服务器,请求相应文件,然后人家才会把数据传给你,也就是说WIFI肯定是双向的,就像以太网接口或蓝牙接口一样,所谓“只能发射”其实是狭义上的说法。Openwrt提供了网桥逻辑配置界面,只要把wifi配置为DHCP服务器,映射到系统WAN就大功告成了。
配置完毕后,使用Putty实现远程终端,winSCP实现远程文件管理
3、必要软件
操作系统:Openwrt Backfire 10.03。
如果刷的是原版系统,而非文中提到的固件的话,可能需要执行下列步骤
(1)、软件包 -- kmod-usb-audio, alsa-utils, kmod-usb-storage, kmod-usb-ohci,
kmod-usb2, kmod-usb-hid, kmod-nls-base, kmod-nls-cp437,
kmod-nls-iso8859-1, kmod-nls-utf8, kmod-fs-ext3, kmod-fs-vfat,
kmod-fuse, ntfs-3g, block-hotplug, libiconv, zlib, libmad
安装步骤如下:
1.安装USB声卡驱动
root@OpenWrt:/# opkg install kmod-usb-audio
root@OpenWrt:/# ls dev
显示audio、dsp表示声卡安装成功
2.安装支持库
root@OpenWrt:/# opkg install kmod-usb-audio
root@OpenWrt:/# opkg install alsa-utils
root@OpenWrt:/# opkg install kmod-usb-storage
root@OpenWrt:/# opkg install kmod-usb-ohci
root@OpenWrt:/# opkg install kmod-usb2
root@OpenWrt:/# opkg install kmod-usb-hid
root@OpenWrt:/# opkg install kmod-nls-base
root@OpenWrt:/# opkg install kmod-nls-cp437
root@OpenWrt:/# opkg install kmod-nls-iso8859-1
root@OpenWrt:/# opkg install kmod-nls-utf8
root@OpenWrt:/# opkg install kmod-fs-ext3
root@OpenWrt:/# opkg install kmod-fs-vfat
root@OpenWrt:/# opkg install kmod-fuse
root@OpenWrt:/# opkg install ntfs-3g
root@OpenWrt:/# opkg install block-hotplug
root@OpenWrt:/# opkg install libiconv
root@OpenWrt:/# opkg install zlib
root@OpenWrt:/# opkg install libmad
- (2)、解压文中的附件,复制mplayer,到/usr/share/mplayer/目录下(如果目录不存在请新建)
执行下来命令修改执行权限755
root@OpenWrt:/# chmod 755 /usr/share/mplayer/mplayer
插USB声卡到路由器,稍等片刻,声卡上的指示灯点亮,说明系统已经识别并挂载声卡。
接下来试运行mplayer:
创建fifo文件
root@OpenWrt:/# mkfifo /fifofile
root@OpenWrt:/# /usr/share/mplayer/mplayer -slave -input file=/fifofile -playlist /播放列表地址
4、电台列表(播放列表)
mplayer正常运行还不行,如果没有网络电台的URL的话,只有听本地文件或者是空气。因此,我们可能需要辛苦地到处筹集地址。设想假如有个程序能自动获取网上的所有资源并生成播放列表,那就方便多了。这里,对AnyRadio进行了深入研究,成功找出API地址,编写了下面的linux shell方便各位。
执行下面命令,
root@OpenWrt:/# mkdir /webradio/
root@OpenWrt:/# mkdir /webradio/vars
上传下面代码到/webradio/downloadlist
#!/bin/sh
# Download the radio stations list from the server
# Read the list of radio stations
read_list()
{
rm -f /webradio/vars/playlist.lst
lnum=`awk 'END{print NR}' /webradio/vars/weblist.lst`
echo +10 count:$lnum
for i in $( seq 1 $lnum );do
str=`sed -n ${i}p /webradio/vars/weblist.lst`
str=`echo $str | cut -d"|" -f6`
len=`echo $str|cut -c1-1`
#if [ ! $len == r ]
# then
echo +11 $i $str
echo $str >> /webradio/vars/playlist.lst
#fi
done
}
echo
echo +Download anyradio list.
echo
rm -f /webradio/vars/url.lst
surl="http://113.31.87.69/getAppServer.jsp?sysid=8020&channelid=7001&version=6008"
wget -c $surl -O /webradio/vars/url.lst
if [ -f /webradio/vars/url.lst ]
then
URL=`sed -n 1p /webradio/vars/url.lst`
echo Server ip: $URL
else
echo +99 Download error!
fi
echo
echo please wait... downloading
rm -f /webradio/vars/weblist.lst
wget -c http://$URL/conf/channel.list -O /webradio/vars/weblist.lst
if [ -f /webradio/vars/weblist.lst ]
then
echo downloaded
read_list
else
echo +99 download error!
fi
设置脚本755执行权限
root@OpenWrt:/# chmod 755 /webradio/downloadlist
最后运行脚本
root@OpenWrt:/# /webradio/downloadlist
待程序结束后,打开/webradio/vars/playlist.lst 文件,成千电台的地址就呈现在眼前。
5、至此,路由器已经变成了网络收音机或播放器,剩下的还可以加LCD,MCU控制等。
关于mplayer:
Mplayer 是linux下的多媒体播放程序。为了编译能在BCM6358 处理器下运行的的mplayer,吾费尽周折,现在可以稳定运行在openwrt下。
由于BCM6358的ALU没有浮点运算单元,所以干脆把源程序里的OSD,视频等全部剪掉了,解码方式改用定点解码,事实上播放效果优于笔记本电脑。
目前附件中的mplayer支持mp3(libmad), wmav1, wmav2, aac(faad2), flac, ogg(tremor)几种有定点解码库的格式, 其中 wma 解码用到了 Rockbox 的定点解码库。
支持主流流媒体协议http,rspt,mms,支持自动DNS解析服务器IP
*********************************************************************
* 固件下载地址:
* 不带CFE固件: http://pan.baidu.com/share/link?shareid=297312&uk=1562445911
* 带CFE的固件: http://pan.baidu.com/s/17ouFx
* =========================================================
*
* 编译完毕的 Mplayer: http://pan.baidu.com/s/1BYfgX
*********************************************************************