找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 2146|回复: 3

自编译Lean大Newifi mini y1固件(二),设置usb led让灯亮起来过程记录

[复制链接]
本帖最后由 wofl5629 于 2021-3-14 23:19 编辑

前排感谢Lean的源码,以及全体开源社区的无私开发者们~
1. 背景说明
1.1. 在完成了固件自编译工作后,我发现默认usb指示不亮,由于插在路由上的是一块8gu盘,此前还已经挂过一次了(电吹风热了下又活了),我希望路由上的usb灯能在读写数据时闪烁,这样能减小拔u盘给它拔挂了的概率,毕竟每次需要拔u盘的时候都手动umount或者是断电路由不现实。ok,为了实现这一目标,同时led控制也是openwrt这一庞大系统中较为简单的部分,适合用来入门学习,于是进行了如下探究~

2. 瞎琢磨&查阅中文资料
2.1. 首先试图在luci界面的“系统-LED配置”用gui搞定,结果发现newifi-y1:blue:usb这个类是有了,但是trigger中没有能让丫亮的(除了default on)。于是以trigger为关键词搜索,得知需要一个“kmod-ledtrig-usbdev”的玩意儿。然鹅很遗憾在编译的时候我找不到这个选项,搜索也没有,于是只能进一步找资料。

2.2. 本坛以usb led”为关键词能搜出的资料不多,发现有位老哥通过修改/etc/hotplug.d/usb/10-motion中的代码实现了插u盘灯亮,拔下则熄灭的效果。试了下确实有效,不过这个不是我想要的呀,而且这个位置一看就是定义hotplug行为的,遂放弃。

2.3. 本坛还有一篇提到需要修改dts定义,其实能default on就说明定义没问题,当时没搞懂。对newifi mini y1而言,dts文件mt7620a_lenovo_newifi-y1.dts存放在/源码下载目录/target/linux/ramips/dts/,其中有关usb-led部分为:
                usb {
                        label = "newifi-y1:blue:usb";
                        gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
                        trigger-sources = <&ohci_port1>, <&ehci_port1>;
                        linux,default-trigger = "usbport";
                };

  其实敏锐的人看到这应该发现问题了,不过我很菜==觉得这个定义没啥问题就关了。
  顺便,dts目录还有一个mt7620a_lenovo_newifi-y1.dtsi,定义了下reset和内存,具体有待深究,各位找的时候别找错了就行。
  dts更详细的中文介绍我找到了篇wowotech的,超硬核,我基本囫囵吞枣勉强看完==哈哈~推荐大家去看,看会了记得来教我~~
3. 上官网翻doc
3.1. openwrt官网继续以“usb led”为关键词搜索,终于找到一篇有用的https://openwrt.org/docs/guide-user/base-system/led_configuration?s[]=kmod&s[]=ledtrig&s[]=gpio 基本跟led相关的讲的很明白了,有兴趣可以去看看,其中usb device节引起了我的兴趣
  现在回过头看其实这篇已经有点过时了,给出的命令行kmod使用的仍然是usbdev,但表格中又备注usbport,是的,现在就和前面的dts文件对的上了,猜测可能是因为不是所有机型都改成了usbport写法所以仅在表格中用“may be”提示?对小白来说太坑了。。。我一开始只看到usbdev没细看表格,满世界找usbdev的安装方法==最后绕了一大圈才注意到表格的提示。

3.2. So?问题解决,本次折腾结束。。。才怪!在>Kernel modules>LED module界面我仍然找不到这个kmod-ledtrig-usbport,尝试搜索菜单依旧无果。。。那一刻我真的是抓狂的,官方给我指了一个不存在的包?L大的源码有问题(我差点就跑去提issue了)?

3.3. 冷静了两天+像无头苍蝇似的瞎翻文档后,我找到了点有意思的东西~[url=https://openwrt.org/releases/19.07/changelog-19.07.0?s[]=kmod&s[]=ledtrig&s[]=gpio#targetramips_349_changes]targetramips_349_changes[/url] 这个页面是19.07的改动日志,其实当时已经不报啥希望了,就想看看y1是不是改了啥文档上没提的东西,结果下面这两个东西成功吸引了我的注意
  点进去看看能得到啥启发不~该改动描述如下:
Assign the usbdev trigger via devicetree for all subtargets and drop
the userspace handling of the usb leds.

With the change all usb ports are triggering the usb led instead of
only usb 1.1 XOR usb 2.0 XOR usb 3.0 as it was before.

  大概意思就是说所有子系统统一使用devicetree来管理usb设备,用户空间设置usb led灯的方法被弃用了。等等。。。那y1以前的dts是怎么定义的呢?往下翻就能看到详细改动:
旧的:
usb {
  32                         label = "y1:blue:usb";
  33                         gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
  34                 };


  新的在上面就不重复贴了,这里得到一个信息就是以前的dts是没有trigger的,虽然好像知道了也没啥实际作用,但是我越来越肯定usbport就是解决问题的关键。
       PS:对于非dts定义的led,配置存放在/etc/config/system这个文件下。

3.4. 经过漫长的寻找,终于又找到点有用的
60f41c6 ramips: add usb-ledtrig-usbport to DEVICE_PACKAGES of CY-SWR1100 (+2,-1)


这台CY-SWR似乎也不支持usb led,点进去一看,豁然开朗了~改动代码如下
   KERNEL := $(KERNEL_DTB)
   SEAMA_SIGNATURE := wrgnd10_samsung_ss815
   DEVICE_TITLE := Samsung CY-SWR1100
-  DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 swconfig
+  DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 | \
+       kmod-usb-ledtrig-usbport swconfig
endef
TARGET_DEVICES += cy-swr1100


  其中-号是删除的,+号是新增的,论坛好像不会保留复制粘贴的颜色,特此说明,其实在官网页面红绿差分看得还是很清楚的。
     问题就是这个kmod-usb-ledtrig-usbport并非定义于make menuconfig的菜单,而是在源码/target/linux/ramips/image/rt3883.mk 中。哈哈~有点小激动,我也算是可以宣称自己改过mk文件的人了,下面的工作就跟喝水一样简单了,找到y1对应的文件,照葫芦画瓢添加修改。

3.5. 插电~开机~干南桥~~哦对不起走错片场了,应该是编译~刷入~亮灯~~一气呵成有木有。嗯。。拷个文件试试,淦,这灯也不闪啊。。。合着我用这么些天的折腾换回2.3中就完成的效果?
4. 结语&待解决
  再写可能篇幅有点超了,对太长不看党也不友好==好吧其实是怎么让丫闪我自己还没研究出来。。。
  其实回过头来看,一开始就该直奔官方网站查资料,满屏英文虽然看着不太友好,不过使用起来还是效率高点。这个问题能解决实际上也是运气,虽然写出来的就几个changelog,实际上三百多项都快给我过了一遍,随缘点进去看。。。效率低倒不说,如果遇上不是usb led这种自己管自己的简单问题,可能翻遍了也找不到解决方案。
  最后问下,这种源码有问题的是不是可以去commit,不是程序猿所以不太懂git和开源社区的规矩==也怀疑dalao们早都知道了只是觉得小问题懒得改?怕跑去提交变成班门弄斧就丢人了。。
看到这就顺手点个评分吧~我会继续记录自己的学习过程,也希望这样的分享能帮到哪怕那么一个两个朋友~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
学习了,很硬核
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层

菜鸡一只而已~刚重新排了下版,word里贴进来还是有点乱
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

上一版重启无法保留配置,不知道这版怎样
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-5 13:33

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表