找回密码
 立即注册
img_loading
智能检测中

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 9352|回复: 47

[红米ax6000] 希望有大佬开发红米AX6000的WS2812B(NeoPixels) LED RGB灯效

[复制链接]
发表于 2023-1-13 15:33 | 显示全部楼层 |阅读模式
本帖最后由 lgs2007m 于 2023-2-19 20:38 编辑

首先感谢OpenWrt论坛HZFrodo、981213和其他大佬对红米AX6000 WS2812B(NeoPixels) LED的RGB驱动支持!!
mediatek: add LED support for Xiaomi Redmi Router AX6000 #11271

OpenWrt官方源码添加红米AX6000 LED支持的三个commit:
kernel: add driver package for WS2812B LEDs
mediatek: enable sel_clk for spi-mt65xx
mediatek: add LED support for Xiaomi Redmi AX6000

目前OpenWrt官方、X-Wrt、Lean等开源驱动的源码仓库已经支持该LED的RGB驱动,hanwckf闭源驱动源码仓库也支持了,237大佬的仓库暂时还未支持。
我自己搬运了hanwckf大佬仓库的LED驱动修改到237大佬的源码上,需要的可以试试我的云编译仓库:
https://github.com/lgs2007m/Actions-OpenWrt

最近看到恩山个别帖子标榜“炫彩LED”“幻彩接口”,这个就是添加LED驱动支持,只是在系统菜单下面有个LED配置界面,并不能实现RGB灯效,RGB颜色需要手动更改。


小米惯用配置:两个LED灯,一个状态指示灯status,一个网络指示灯network。
需要修改multi_intensity中RGB三个分量的值[0-255],来改变颜色。
  1. /sys/class/leds/rgb:network/multi_intensity
  2. /sys/class/leds/rgb:status/multi_intensity
复制代码

可以通过echo输出重定向来设置颜色,immortalwrt的话需要先输入ash再输入命令:
  1. #     R    G    B      取值0-255
  2. echo "255 255 255" > /sys/class/leds/rgb:network/multi_intensity
  3. echo "255 255 255" > /sys/class/leds/rgb:status/multi_intensity
复制代码
可以将设置颜色的命令添加到本地启动脚本/etc/rc.local,开机即设置好颜色。

不过说到底还是静态改变颜色,我想动态改变颜色,就自己捣鼓了个lua脚本,用uloop定时器改变RGB值,能力只能到这里,效果如下面的gif图。
如果有大佬感兴趣,希望大佬可以开发个app来控制RGB灯效


我的简陋RGB灯效脚本my_led.lua,需要确认已安装libubox-lua软件包,然后ssh登录后直接运行下面代码,会生成文件/etc/config/my_led.lua。
然后使用nohup让脚本一直在后台运行,可以关闭shell了,脚本会一直循环改变两个LED灯的RGB值。也可以将命令添加到开机启动。
当然你也可以设置status和network灯常亮,更明显些。LED配置可以随意改状态,不影响颜色变化。
  1. nohup /etc/config/my_led.lua > /etc/config/my_led.log 2>&1 &
复制代码
想要关闭进程并设置白色可以输入下面命令:
  1. kill $(ps | grep 'lua /etc/config/my_led.lua' | grep -v 'grep' | head -n 1 | cut -d 'root' -f 1)
  2. echo "255 255 255" > /sys/class/leds/rgb:network/multi_intensity
  3. echo "255 255 255" > /sys/class/leds/rgb:status/multi_intensity
复制代码

SSH登录运行下面命令生成/etc/config/my_led.lua文件
  1. ash
  2. cat << "EOF" > /etc/config/my_led.lua
  3. #!/usr/bin/env lua

  4. require "uloop"
  5. --需要安装libubox-lua

  6. uloop.init()

  7. local timer
  8. local timer_set_ms=250 --250毫秒

  9. local status_R=255
  10. local status_G=255
  11. local status_B=255
  12. local status_flag=0 --flag=0:RGB分量减interval,flag=1:RGB分量加interval
  13. local status_case="R" --case=R:对R分量进行加减操作,case=G:对G分量进行加减操作,case=B:对B分量进行加减操作
  14. local status_one=0 --one=1:完成了一次255->0->255加减操作,可以换下一个分量操作了
  15. local status_interval=25 --rgb:status的RGB分量每次加减量,范围0-255

  16. local network_R=255
  17. local network_G=255
  18. local network_B=255
  19. local network_flag=0
  20. local network_case="G"
  21. local network_one=0
  22. local network_interval=25

  23. function change_value( value,flag,one,interval )
  24.         if(flag == 1) then
  25.                 value=value+interval
  26.                 if(value >= 255) then
  27.                         value=255
  28.                         flag=0
  29.                         one=1
  30.                 end
  31.         else
  32.                 value=value-interval
  33.                 if(value <= 0) then
  34.                         value=0
  35.                         flag=1
  36.                 end
  37.         end
  38.         return value,flag,one
  39. end

  40. function change_color()
  41.         --控制rgb:status
  42.         if(status_case == "R") then
  43.                 status_R,status_flag,status_one=change_value(status_R,status_flag,status_one,status_interval)
  44.                 if(status_one == 1) then
  45.                         status_one=0
  46.                         status_case="G"
  47.                 end
  48.         elseif(status_case == "G") then
  49.                 status_G,status_flag,status_one=change_value(status_G,status_flag,status_one,status_interval)
  50.                 if(status_one == 1) then
  51.                         status_one=0
  52.                         status_case="B"
  53.                 end
  54.         else
  55.                 status_B,status_flag,status_one=change_value(status_B,status_flag,status_one,status_interval)
  56.                 if(status_one == 1) then
  57.                         status_one=0
  58.                         status_case="R"
  59.                 end
  60.         end
  61.         --控制rgb:network
  62.         if(network_case == "R") then
  63.                 network_R,network_flag,network_one=change_value(network_R,network_flag,network_one,network_interval)
  64.                 if(network_one == 1) then
  65.                         network_one=0
  66.                         network_case="G"
  67.                 end
  68.         elseif(network_case == "G") then
  69.                 network_G,network_flag,network_one=change_value(network_G,network_flag,network_one,network_interval)
  70.                 if(network_one == 1) then
  71.                         network_one=0
  72.                         network_case="B"
  73.                 end
  74.         else
  75.                 network_B,network_flag,network_one=change_value(network_B,network_flag,network_one,network_interval)
  76.                 if(network_one == 1) then
  77.                         network_one=0
  78.                         network_case="R"
  79.                 end
  80.         end

  81.         os.execute("echo "..status_R.." "..status_G.." "..status_B.." > /sys/class/leds/rgb:status/multi_intensity")
  82.         os.execute("echo "..network_R.." "..network_G.." "..network_B.." > /sys/class/leds/rgb:network/multi_intensity")
  83.         --os.execute("echo rgb:status "..status_R.." "..status_G.." "..status_B.." "..status_case.."")
  84.         --os.execute("echo rgb:network"..network_R.." "..network_G.." "..network_B.." "..network_case.."")
  85.         timer:set(timer_set_ms) --计时器设置时间
  86. end

  87. timer = uloop.timer(change_color) --运行change_color
  88. timer:set(timer_set_ms) --计时器设置时间

  89. uloop.run()

  90. EOF
  91. #给文件执行权限
  92. chmod +x /etc/config/my_led.lua
复制代码


本帖子中包含更多资源

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

×

评分

参与人数 7恩山币 +9 收起 理由
POUNDK + 1 牛!
kevin_fan + 1 送你一块“恩山”牌肥皂,喏,就在你脚下、.
xc28002 + 1 你好,久仰卧龙大名,在下凤雏!
imwf + 2 这个年轻人不讲武德,耗子尾汁!
xxrouter + 1 强大的恩山!(以下重复1万次)
hwlon + 2 感谢你的分享,无论怎样,你都是最无私的人.
70ff + 1 强大的恩山!(以下重复1万次)

查看全部评分

只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
发表于 2023-1-13 17:06 | 显示全部楼层
首先折腾万岁,丢角落的东西搞这么漂亮没啥意义啊~

点评

有RGB,性能增加30%  详情 回复 发表于 2023-1-14 16:44
有和不用是两码事氛围灯肯定有它的用处 还有小米AX9000、小米万兆路由器都是有RGB氛围灯的,到时也可以用在其他路由器上呀  详情 回复 发表于 2023-1-13 17:10
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-13 17:10 | 显示全部楼层
xwf54841440 发表于 2023-1-13 17:06
首先折腾万岁,丢角落的东西搞这么漂亮没啥意义啊~

有和不用是两码事氛围灯肯定有它的用处
还有小米AX9000、小米万兆路由器都是有RGB氛围灯的,到时也可以用在其他路由器上呀
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2023-1-13 20:16 | 显示全部楼层
这种有的没的没有意思,啥时候能有稳定版信号不比原厂固件差的OPENWRT固件

点评

其他的不敢说,闭源op稳如老狗,信号和原厂相当了。 “吃饱了”也要来点“文化生活”不是  详情 回复 发表于 2023-1-13 20:21
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-13 20:21 | 显示全部楼层
synoman 发表于 2023-1-13 20:16
这种有的没的没有意思,啥时候能有稳定版信号不比原厂固件差的OPENWRT固件

其他的不敢说,闭源op稳如老狗,信号和原厂相当了。
“吃饱了”也要来点“文化生活”不是

点评

大佬指条路,哪个闭源现在比较成熟。 大概两个月之前刷过不是闭源的,不理想又换回原厂了 但是原厂SHELLCLASH有时候莫名其妙出问题,而且手机最近也出不了国,一直苦等OPENWRT真正稳定固件  详情 回复 发表于 2023-1-13 20:24
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2023-1-13 20:24 | 显示全部楼层
lgs2007m 发表于 2023-1-13 20:21
其他的不敢说,闭源op稳如老狗,信号和原厂相当了。
“吃饱了”也要来点“文化生活”不是

大佬指条路,哪个闭源现在比较成熟。
大概两个月之前刷过不是闭源的,不理想又换回原厂了
但是原厂SHELLCLASH有时候莫名其妙出问题,而且手机最近也出不了国,一直苦等OPENWRT真正稳定固件

点评

我现在用237大佬的闭源op,很稳。或者用hanwckf大佬源码编译的闭源op也可以。 开源的固件我没怎么用,不过这么久了,也有几个大佬编译分享了,应该也挺稳的了  详情 回复 发表于 2023-1-13 20:40
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2023-1-13 20:32 来自手机 | 显示全部楼层
我用237大佬的,就是米家有的设备无法连接,不知道怎么回事

点评

加密方式不要用wpa3psk,我试过有些智能家居不支持新的认证方式,只能连接wpa2psk  详情 回复 发表于 2023-1-14 16:46
可以试着调下无线参数(虽然我不懂)。 或者试试hanwckf大佬源码的闭源固件,其他开源固件,再或者刷回官方系统,看看是不是固件问题、设置问题。想解决得找出问题所在,因为你的设备别人不一定有,不能帮你测试到  详情 回复 发表于 2023-1-13 20:37
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-13 20:37 | 显示全部楼层
53060476 发表于 2023-1-13 20:32
我用237大佬的,就是米家有的设备无法连接,不知道怎么回事

可以试着调下无线参数(虽然我不懂)。
或者试试hanwckf大佬源码的闭源固件,其他开源固件,再或者刷回官方系统,看看是不是固件问题、设置问题。想解决得找出问题所在,因为你的设备别人不一定有,不能帮你测试到。
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-13 20:40 | 显示全部楼层
synoman 发表于 2023-1-13 20:24
大佬指条路,哪个闭源现在比较成熟。
大概两个月之前刷过不是闭源的,不理想又换回原厂了
但是原厂SHEL ...

我现在用237大佬的闭源op,很稳。或者用hanwckf大佬源码编译的闭源op也可以。

开源的固件我没怎么用,不过这么久了,也有几个大佬编译分享了,应该也挺稳的了
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2023-1-13 21:27 | 显示全部楼层
lgs2007m大佬 你 github 里action 出来的固件是273大佬的加led的么,挖个坑,我看到了filogic830的bga点位图,usb2在芯片边上,飞个usb2出来可好啊

点评

是的,标注padavanonly的是237大佬的源码编译的,带LED驱动。 MT7986A的点位图早有了,看我另外帖子。但是观察电路板上没看到引线出来,我没有技术又拆不了U,所以还没有下一步操作  详情 回复 发表于 2023-1-13 21:31
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-13 21:31 | 显示全部楼层
本帖最后由 lgs2007m 于 2023-1-13 21:33 编辑
bg3mdoyuan 发表于 2023-1-13 21:27
lgs2007m大佬 你 github 里action 出来的固件是273大佬的加led的么,挖个坑,我看到了filogic830的bga点位 ...

是的,标注padavanonly的是我fork了237大佬的源码(参照hanwckf大佬添加了LED驱动)编译的,带LED驱动。
MT7986A的点位图早有了,看我另外帖子。但是观察电路板上没看到引线出来,我没有技术又拆不了U,所以还没有下一步操作

点评

这个BGA球间距多少,如果间距够打机械孔,感觉做个soc那么大pcb,仅仅把soc垫起来可以引出线。usb2我觉得是ok的,usb3信号完整性堪忧。 另一个办法就是非常细的漆包线焊上去,打绿油阻焊 然后再焊soc上去,不  详情 回复 发表于 2023-1-13 21:42
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2023-1-13 21:42 | 显示全部楼层
lgs2007m 发表于 2023-1-13 21:31
是的,标注padavanonly的是我fork了237大佬的源码(参照hanwckf大佬添加了LED驱动)编译的,带LED驱动。
...

这个BGA球间距多少,如果间距够打机械孔,感觉做个soc那么大pcb,仅仅把soc垫起来可以引出线。usb2我觉得是ok的,usb3信号完整性堪忧。

另一个办法就是非常细的漆包线焊上去,打绿油阻焊

然后再焊soc上去,不过线直径和球高差不多是可以的。

或者有没有人想过把灯拆了用灯的spi接口读个tf卡。。。从新套device tree

点评

我之前也想改USB2.0,编译固件时看了下device tree,闭源op那边DTS的USB默认是开的,开源op需要设置开启下,但是都是编译出来的的固件加了USB内核和驱动,输入lsusb就报错unable to initialize libusb : -99,没有能  详情 回复 发表于 2023-1-13 22:02
原来是大佬,失敬了 大佬NB,方法都很好,只是我只有热风枪,没有BGA焊台,也没有做钢网,不敢操作 下面是MT7986A的BGA的封装信息,大佬看看有用没 [attachimg]596570[/attachimg]  详情 回复 发表于 2023-1-13 21:51
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-13 21:51 | 显示全部楼层
bg3mdoyuan 发表于 2023-1-13 21:42
这个BGA球间距多少,如果间距够打机械孔,感觉做个soc那么大pcb,仅仅把soc垫起来可以引出线。usb2我觉得 ...

原来是大佬,失敬了
大佬NB,方法都很好,我只有热风枪,没有BGA焊台,也没有做钢网,不敢操作
下面是MT7986A的BGA的封装信息,大佬看看有用没



本帖子中包含更多资源

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

×

点评

看了下球是0.65的,机械孔就行,不复杂,不贵,可以做个pcb垫片。垫起来0.8mm 估计对其他总线,比如pcie 啥的影响不大  详情 回复 发表于 2023-1-13 21:58
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2023-1-13 21:58 | 显示全部楼层
lgs2007m 发表于 2023-1-13 21:51
原来是大佬,失敬了
大佬NB,方法都很好,我只有热风枪,没有BGA焊台,也没有做钢网,不敢操作
下面是M ...

看了下球是0.65的,机械孔就行,不复杂,不贵,可以做个pcb垫片。垫起来0.8mm 估计对其他总线,比如pcie 啥的影响不大
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-13 22:02 | 显示全部楼层
bg3mdoyuan 发表于 2023-1-13 21:42
这个BGA球间距多少,如果间距够打机械孔,感觉做个soc那么大pcb,仅仅把soc垫起来可以引出线。usb2我觉得 ...

我之前也想改USB2.0,编译固件时看了下device tree,闭源op那边DTS的USB默认是开的,开源op需要设置开启下,但是都是编译出来的的固件加了USB内核和驱动,输入lsusb就报错unable to initialize libusb : -99,没有能力解决,在固件这里就卡住了。
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛

只谈技术、莫论政事!切勿转播谣言!为了你也为了他人。
只谈技术、莫论政事!(点击见详情) 切记不要随意传播谣言,把自己的日子过安稳了就行,为了自己好也为了大家好。 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。

查看 »

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

GMT+8, 2025-7-13 00:30

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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

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