Linux内核4.x关闭USB网卡灯
TL;DR
下载关灯脚本,配置udev规则。实现插入指定USB网卡设备后不会亮灯、闪烁的效果。
问题描述
由使用树梅派组建低成本网络存储项目搭建成的个人NAS是使用USB网卡进行互联的,这造成了USB网卡上的链接状态灯在夜间无数据访问时也会不断闪烁。 势必会影响周遭的正常休息。
在上网查找后,发现有基于Linux老版本内核的关灯教程。但是并不适用于Linux4.x的新子系统。故实验成功后记录。
解决的思路是直接将网卡灯在任何情况下的亮度设置为0,并配置内核udev设备管理器,在插入USB网卡设备后当即运行关闭网卡灯脚本。
解决方法
1. 下载disable_led_usb_wifi.sh
脚本,设置其可被执行的权限,并存储在/usr/local/bin
目录中。
如上所示,关灯脚本使用了后台执行的方案。这是因为udev的策略执行是阻塞性的,同时在插入设备后立即执行脚本不能实现关灯效果。 所以我们选择等待一个魔法数字(MAGIC NUMBER)的时长,待此之后再执行关灯脚本。
同时,你需要根据自身网卡设备,更改变量DEVICE_NAME
的内容。
2. 添加udev策略
在目录/etc/udev/rules.d
中添加规则100-usbwifi.rules,内容如下
请根据实际lsusb
指令的输出,更换上述文本中的your-idvendor-here与your-idproduct-here。
举个例子,
在上述的命令回显中,我们能得知USB网卡设备为
Bus 001 Device 006: ID 2001:3c1b D-Link Corp.
其中,idVendor为2001,idProduct为3c1b,规则100-usbwifi.rules的内容应为
ACTION==”add”, ATTRS{idVendor}==”2001”, ATTRS{idProduct}==”3c1b”, RUN+=”/usr/local/bin/disable_led_usb_wifi.sh”
FYI
-
topbug.net – Control the LED on a USB WiFi Adapter on Linux
-
Wikipedia – udev
-
debian.org – HowToIdentifyADevice > USB
-
Wikipedia – Magic number (programming)