树莓派折腾记:打造HiFi解码转盘(基于Volumio和Dac扩展板)
文章更新:
20170221 初次成文 20170418 修改"SSH配置"内容
不务正业的小苏又来了~
这些日子小苏入了一款适用于树莓派的Dac扩展板,可以将音频文件解码为模拟信号通过3.5mm插孔或者通过双莲花插口输出。相应的,需要专用的系统Volumio2来驱动这块Dac扩展板。
为什么要专门写这篇文章呢?因为在可被百度搜索到的中文网页中,有关Volumio配置的中文文章少之又少,不得已,小苏只好把目光转向了谷歌。在爬了若干英文资料后,小苏终于解决了一个又一个的坑,成功配置好了Volumio2。
在这篇文章中,小苏使用的扩展板型号是PiFi Dac+ V2.0,Volumio版本为发文时的最新版Volumio2.041 (2016-12-12)。
折腾记录:
1.系统烧写:
烧写Volumio的步骤和烧写Raspbain的步骤是一样的。在Windows下可以使用win32diskimager烧写镜像至SD卡,在Linux下可以使用dd命令烧写镜像。Windows下烧写镜像的文章有很多,如果你想在Linux下烧写镜像,可以参考这篇文章:
Linux命令行烧录树莓派镜像至SD卡 - 树莓派实验室
稍稍告诉你,如果你有两张SD卡,并且其中的一张安装了Rasbain或者其他适配于树莓派的Linux系统时,也可以在树莓派上使用dd命令,将镜像烧写到另一张SD卡。
Volumio的镜像文件可以在这里下载到:
https://github.com/volumio/Volumio2/releases
2.上电开机:
将Volumio镜像烧写到SD卡后,将SD卡插入树莓派,将Dac扩展板下的插槽插入树莓派的GPIO引脚后,就可以上电开机了。上电后,Dac扩展板上的红色指示灯(电源指示灯)会亮起,代表扩展板通电正常。初次开机花费的时间比较长,可能需要5分钟左右的时间,在这段时间内,Volumio会自动执行系统初始化,扩展SD卡分区等工作。等待这些工作进行完毕后,Volumio会开启一个名为"Volumio",密码为"volumio2"(注意大小写,密码中的"v"为小写,热点名称中的"V"为大写)的热点方便用户配置。这个热点的开启也标志着Volumio开机成功。
3.语言配置:
连接此热点后,我们可以通过在浏览器地址栏中输入:http://volumio.local或者http://192.168.211.1/来登陆Volumio的WebUI。由于Volumio的WebUI语言默认为英文,所以我们需要依次点击"齿轮图标" - APPEARANCE - Select Language - 简体中文 来将WebUI的语言设置为简体中文(下图为语言变更前的截图,点击"Save"按钮后语言就会被更改为中文了~)。
4.Dac设置:
直插Dac扩展板之后是不能直接播放声音的。还需要在"播放选项"中对Dac进行一番设置。小苏的设置图如下:
按照图中设置完毕后,对于DAC Model设置这一块,做出更改后理论上是不需要重启就可以生效的(仅仅是对于我这块PiFi Dac+ v2.0或者是对于HiFiBerry Dac+来说,其他板子还是需要重启才能生效的),但是为了保险起见,小苏还是推荐大家在更改DAC Model后进行一次重启操作("齿轮图标" - 关机 - 重启),确保驱动正常工作无误。
5.SSH配置:
Volumio默认开启了SSH服务,所以当你的设备与树莓派处在同一WIFI网络下时,可以通过SSH连接到树莓派。这也就意味着你可以通过SSH连接到Linux终端对树莓派进行命令行操作,也可以通过SFTP连接到树莓派进行文件的传输与管理操作。因为Volumio基于Rasbain,所以Volumio在终端的很多操作与Rasbain相似。值得说明的是,在Volumio2.0中,默认的SSH帐号不是pi而是volumio,默认的密码不是raspberry而是volumio。也就是说,在Volumio中,登陆SSH的默认帐号密码都是volumio。
通过SSH连接到终端后,终端会输出以下欢迎界面:
因为Volumio基于Rasbain,所以我们可以像在Rasbain上一样,对Volumio进行更换软件源,安装软件等操作。详情可以参考我的这篇文章:
同时,给Volumio执行sudo apt-get upgrade等升级命令是无法正常升级的,原因是Volumio的正常运行需要某些包的支持,升级后可能导致这些新版本的包不再兼容Volumio而损坏系统,所以不要给Volumio执行升级(upgrade)操作,即使你这么做了,你也无法升级成功。
6.播放音乐
进行了前面那么多配置,终于到了最激动人心的时刻了。Volumio支持播放本地音乐(即存放在SD卡中的音乐文件),USB存储中的音乐(即标准USB存储设备中的音乐文件),还支持播放NAS中的音乐。当你插入USB存储设备或者连接到NAS后,Volumio会自动挂载这些设备并在"Browse界面" - 音乐库中显示出来。那么问题来了,本地音乐应该放到什么地方呢?是不是把音乐文件放到SD卡的任何一个目录Volumio都能识别并且能在"音乐库"中显示出来呢?
当然不是~
对于本地音乐,最好的方式是将它们通过SFTP上传到/data/INTERNAL/
目录下,并且最好按照自己的播放习惯分文件夹存储(当然不分文件夹存储也可以,但是如果把所有音乐文件直接塞到INTERNAL目录下,从"音乐库"中加载文件时可能会很费劲),如果不把音乐文件存放在/data/INTERNAL/
下,Volumio很可能无法识别,即使能够识别,也有可能出现无法播放的情况。
在Volumio官方社区给出的一种方式是将音乐文件存放到/home/volumio/music/
下,然后将/home/volumio/music
链接到/var/lib/mpd/music/
下,小苏试了一下,这种方法在Volumio2.0上似乎并不可取,使用这种方法会出现可以识别音乐文件但是无法播放的情况。也许这种方法在Volumio1.x下可行吧~
(这是小苏推荐的本地音乐文件存放方式:)
到此为止,小苏关于Volumio的介绍就结束了~下面看看Volumio的WebUI截图吧~
参考资料:
Volumio2 Github项目:
https://github.com/volumio/Volumio2/
Volumio 官方帮助文档(docs):
https://volumio.github.io/docs/index.html
Linux命令行烧录树莓派镜像至SD卡 - 树莓派实验室:
http://shumeipai.nxez.com/2013/12/08/linux-command-line-burn-raspberry-pi-mirror-to-sd-card.html
- 命令行执行Django脚本的方法
- Spring Security笔记:Hello World
- day5、文件乱码怎么解决
- javascript计算对象的长度
- Spring 4.0.2 学习笔记(2) - 自动注入及properties文件的使用
- day6、Linux下如何找出7天以前的文件删除
- django模板语法之include
- day7、用户登陆出现-bash-4.1$错误的原因
- Django--admin源码流程
- Spring Security笔记:Remember Me(下次自动登录)
- day8、 显示Linux路由表、各列信息
- day9、用户登陆出现-bash-4.1$错误的原因及解决方法
- jboss eap 6.3 域(Domain)模式配置
- 揭穿数据分析的12个神话
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP通过get方法获得form表单数据方法总结
- PHP filesize函数用法浅析
- PHP中创建和编辑Excel表格的方法
- php二维数组按某个键值排序的实例讲解
- thinkphp5引入公共部分header、footer的方法详解
- php实现文章评论系统
- PHP如何搭建百度Ueditor富文本编辑器
- 浅谈keras.callbacks设置模型保存策略
- pandas之分组groupby()的使用整理与总结
- PHP fclose函数用法总结
- Python collections.defaultdict模块用法详解
- PHP crc32()函数讲解
- python读取图像矩阵文件并转换为向量实例
- PHP echo()函数讲解
- Python3开发环境搭建详细教程