圣诞节后一个人孤独在家,因为邮递员都放假了,之前 eBay 到的供电 Y 型硬盘线(本该这几天到)也没有到,干脆搜出点东西自己做了一根。工具不全,成品样子真是可怕,成品图就不放了,总体效果图请参见上面。顺便硬盘盒上钻了俩孔,把 RS 这个盒子的底座固定到了上面,然后把 RPi 一起卡死在上面。主要思路就是利用电源适配器直接带动硬盘,然后再按照上次那个帖子的思路 back-feed 电源到 RPi 上。这样的话 RPi 上面只需要插上硬盘线和网线即可工作,硬盘也有的供电,非常简洁非常方便。
USB Y 型线的做法网上很多,我的做法是稍微按照需求改了一下。材料就是一根 Micro USB 线和一个 USB A 型公口的线头(我手头正好剩一个线头)。在 Micro USB 线中间剖开一块,只剪断 D+(绿色) 和 D-(白色) 接到线头上,然后把线头的 VCC(红色) 和 GND(黑色)搭在数据线的红黑两线上。成品效果和零售的线不一样的地方就是接电源的那一条很长,但是数据和硬盘两头非常短,这样连接硬盘、RPi 和适配器都方便一些。参照下图:
已知问题就是另一个 USB 口就这么废掉了,基本上除了键盘鼠标以外的东西插上去都无法正常工作,包括 WiFi 适配器。现在的组合很适合挂下载,毕竟硬盘的容量是瓶颈。现在在 RPi 上架了一堆服务,包括 Transmission、列目录的 Lighttpd、Aria2 和 http 控制端、自动状态生成脚本(可以通过网页直接看内存、磁盘剩余空间等信息,cronjob 每分钟更新一次)、Samba 服务端和一个可以 AirPlay 音乐的 Shairport。
还是那句话,back-feed 供电有风险,请选用合格的电源适配器。
=================================
12月30日更新:
后来发现 1A 的电源适配器实在是力不从心,所以换成了 2A 的,然后又将做的这根线改进了一下,USB口这里不再供电,只连接 D+ 和 D- 到硬盘的 microUSB 接口,改为另延两条线出来由 GPIO 供电,以解决 smsc9512 Hub 的各种问题。顺便线缆本身也从胶带纸木乃伊变为了塑料壳里各种热熔胶,绝缘性能应该会更好,也更美观了,如图:
后来的改进还包括:
1. /etc/sysctl.conf 将 vm.min_free_kbytes 值赋予为 16384 (即16MB)以防内存溢出;
2. /boot/cmdline.txt 启动参数添加一个 "smsc95xx.turbo_mode=N",关闭 Hub 芯片的加速功能,虽然性能上有损失,不过不太明显,并可以有效地解决各种 Hub 引发的问题
现在已经运行超过30小时,除了 2~3 条 smsc95xx 的 register error 以外(这个真的不知道怎么办,谷歌到的答案很有限),没有出过任何磁盘错误和 USB 设备断电的问题,已经很稳定了。