——Author:qinfan 2014.9.3
1). usb声卡驱动
Kernel modules ---> Sound Support ---> <*> kmod-usb-audio
Utilities ---> <*> alsa-utils
2). 添加输入设备
Kernel modules ---> Input modules ---> <*>kmod-input-evdev...................................... Input event device
3). 添加USB相关支持
Kernel modules —> USB Support —> <*> kmod-usb-core. ##默认已经选了
Kernel modules —> USB Support —> <*> kmod-usb-ohci. ##默认已选 old usb1.0
Kernel modules —> USB Support —> <*> kmod-usb-uhci. ## usb1.1
Kernel modules —> USB Support —> <*> kmod-usb-storage.
Kernel modules —> USB Support —> <*> kmod-usb-storage-extras.
Kernel modules —> USB Support —> <*> kmod-usb2. ##默认已经选了 usb2.0
4). 添加SCSI支持
Kernel modules —> Block Devices —> <*>kmod-scsi-core ##默认已经选了 usb3.0
5). 添加USB挂载
Base system —> <*>block-mount
6). 添加自动挂载工具
Utilities —> Filesystem —> <*> badblocks
7). 添加文件系统支持
Kernel modules —> Filesystems —> <*> kmod-fs-ext4 (移动硬盘EXT4格式选择)
Kernel modules —> Filesystems —> <*> kmod-fs-vfat(FAT16 / FAT32 格式 选择)
Kernel modules —> Filesystems —> <*> kmod-fs-ntfs (NTFS 格式 选择)
8). 添加UTF8编码,CP437编码,ISO8859-1编码,CP936编码
Kernel modules —> Native Language Support —> <*> kmod-nls-cp437
Kernel modules —> Native Language Support —> <*> kmod-nls-iso8859-1
Kernel modules —> Native Language Support —> <*> kmod-nls-utf8
make kernel_menuconfig
File systems --->
保存退出
在package\kernel\linux\modules\nls.mk中参考 nls.mk 的 nls-437添加如下的内容(使用find ./ -name nls.mk或者grep找文件)
define KernelPackage/nls-cp936 SUBMENU:=Native Language Support TITLE:=Simplified Chinese charset (CP936, GB2312) KCONFIG:=CONFIG_NLS_CODEPAGE_936 FILES:=$(LINUX_DIR)/fs/nls/nls_cp936.ko AUTOLOAD:=$(call AutoLoad,25,nls_cp936) $(call AddDepends/nls) endef define KernelPackage/nls-cp936/description Kernel module for NLS Codepage 936 (CP936, GB2312) endef $(eval $(call KernelPackage,nls-cp936))在这之后就会在同样的模块下有cp936的选项,选择编译进内核(据说能这是支持中文的字库,但是我这里没有什么反应)
Kernel modules —> Native Language Support —> <*> kmod-nls-cp936
9).其他
Utilities ---> disc ---> <*> fdisk.................................... manipulate disk partition table##fdisk分区工具
Utilities ---> <*> usbutils................................... USB devices listing utilities
Utilities ---> Filesystem —> <*> ntfs-3g.................................... Stable Read/Write NTFS Driver
退出保存
说明:板子升级固件之后,用一个HUB插上USB声卡和U盘,在/dev/目录下看到 dsp、audio、mixer 文件,则说明已经驱动添加成功,有sda、sda1说明U盘已经加载成功
10). 添加播放器(播放器有两个可选)
【madplay】
Sound ---><*> madplay................................. MPEG audio player in fixed point
Libraries ---> <*> libiconv
Libraries ---> -*- libmad............. An high-quality MPEG audio decoding library ##默认已选
Madplay简单使用方法如下:
madplay 1.mp3 2.mp3 //1.mp3 2.mp3加入列表,保证下一曲可用
-v 获取播放时间 //实时显示播放时间 eg: madpaly -v ***.mp3
-q 不存在任何打印,但现实警告 //快捷键会失效。
-Q 不存在任何打印
--downsample 只采用一半数据
-i 忽略CRC校验错误
-o PATH/xx.wav 可以用来转码,将mp3转为wav //转化之后是乱的。
也可以是其他格式,见说明;.raw 表示是元素pcm,.hex等
-a 开启衰减音量,增加音量,衰减系统为-175~+18 (可以通过键盘+ —调整音量,有延时)
-A 同-a //在实际板上发现,效果出来的很慢。
-1 -2 -m -S 分别指左声道,右声道,双声道,立体声
-s 用于seek播放 如:0:1:20:11 ,seek到1小时,2分钟,11秒时开始播放 //也可以直接写上秒数,比如 mad play -s 40 ***.mp3
-t 用于播放时间现在 0:1:20:11 ,播放到1小时,2分钟,11秒时就停止
-z 用于随机播放列表
-r, --repeat[=MAX] 循环播放无限次或Max次
--tty-control enable keyboard controls 默认是使能热键
--no-tty-control disable keyboard controls
-T, 只显示文件ID3
-V, madplay 版本
热键使用
下一首歌曲 f
上一首歌曲 b
退出:q, Q
获取播放状态信息: i ?
调节音量: - + _ =
暂停恢复:p
停止:s
【mpd】
添加mpd-full播放器
Libraries ---><*> libffmpeg-full................................... FFmpeg libraries (full)
Libraries ---><*> libffmpeg-mini................................... FFmpeg libraries (mini)#可用
Multimedia ---> < *> ffmpeg.................................................... FFmpeg program#添加之后固件过大
##在以上三项中,必须选中至少一项才有mpd-full选项
Sound --->< *> mpd-full...................................... Music Player Daemon (full)
添加mpd-mini,不依赖FFmpeg
Sound ---><*> mpd-mini...................................... Music Player Daemon (mini)#播放器
Sound ---> <*> mpc................................... Music Player Daemon Console Client#控制器可不选
注:mpd-full支持mp3,mms网络电台,http流媒体播放,但是需要ffmpeg的支持
mpd-mini只支持MP3(我是选择的mpd-mini)
在板子上的配置/etc/mpd.conf(可以先参考原配置说明,备份,echo > /etc/mpd.conf,用vi添加如下内容)
说明:/mnt/sda1/为U盘自动挂载的目录,后面的目录都是在U盘中自己手动创建的
audio_output{ }为输出配置,根据自己板子在/dev/下面的设备不同而定
music_directory "/mnt/sda1/music" playlist_directory "/mnt/sda1/.mpd/playlists" db_file "/mnt/sda1/.mpd/database" log_file "/mnt/sda1/.mpd/log" pid_file "/var/run/pid" #state_file "/mnt/sda1/.mpd/state" sticker_file "/mnt/sda1/.mpd/sticker.sql" user "root" group "root" bind_to_address "0.0.0.0" port "6600" log_level "default" auto_update "yes" auto_update_depth "8" audio_output { type "oss" name "mycard" device "/dev/dsp" format "44100:16:2" mixer_type "software" mixer_device "/dev/mixer" mixer_control "PCM" } audio_buffer_size "2048" buffer_before_play "100%" connection_timeout "60" max_connections "4" max_playlist_length "1024" max_command_list_size "2048" max_output_buffer_size "4096" filesystem_charset "UTF-8" id3v1_encoding "ISO-8859-1"在添加mpd后在板子上启动该服务 /etc/init.d/mpd start,启动该服务之后会自动调用mpd进程,有些教程里面还要手动启动mpd是错误的,如果执行mpd报错
socket: Failed to bind to '0.0.0.0:6600': Address already in use
如果是这样的错就换一个端口就可以了,如换成6602什么的,但是这样操作的话本身就是错误的,我只是对自己犯的错做一下记录(使用netstat -nl查看端口信息)。
设置为开机启动服务/etc/init.d/mpd enable
有了该服务才能保证手机终端能够连接板子进行控制,在这个服务成功执行后,会有一个后台服务进程
11).安装和使用MPDroid
在Android应用市场区下载MPDroid的app,可惜没找到,这是我从别人那里拿过来的
http://pan.baidu.com/s/1qWlZlec(百度网盘下载app)(下面为参考教程)
http://www.leiphone.com/news/201406/diy-a-smart-router-topic-androidbox.html
打开MPDroid会自动连接板子,连接不上会有提示弹出,点击【setting】
4. 操作完成之后,退回到当前播放的界面上,如上图。
移植之后存在的问题说明及解决办法:
1.在播放的音乐文件中出现过乱码,开始以为是不支持中文,换了歌曲就没问题了;
2.最开始播放每一首歌曲的开始5秒内会出现频繁的卡顿,这是因为在设置【buffer_before_play "100%"】这个选项的时候没有调成100%的加载;
3.手机上不能控制音量大小,修改【mixer_type "software"】把这个控制器由hardware改为software;
4.调节音量之后,大约7秒后才能在音响中有效果,没办法;
5.添加了新的歌曲不能自动刷新播放列表,需要手动删除/etc/sda1/.mpd/log datebase这些文件,重启之后才能加载新增的歌曲,就算添加了【auto_update "yes"】也没解决;
6.在设置【max_connections "4"】选项时,数值要大于1,不能填写1,否则手机连不上的,可能还有mpc要用一个连接;
7.使用MPDroid的时候,需要在【File】项中一首歌一首歌的添加到播放列表,过一会儿在【Playlist】下才有你新建的播放列表,在播放列表中点击某一首歌不会马上播放,会添加到播放队列中,回到正在播放页面,右滑会有播放队列,在播放队列中点击某一首歌才能直接播放;