相关文档:
我看到论坛上有很多问题询问 “如何更改串口速率” ,以为很简单,但一点也不简单。
OpenWrt 通过内核命令行参数设置 UART 串口波特率,因此它是硬编码到内核中的,据我所知,这是更改串口波特率的唯一方法。
如果你运气好,也许你的内核支持更改串口速率,那么你可以尝试使用 stty 或 mgetty 命令:
mgetty -s 19200 /dev/ttyS0
或者
stty -F /dev/ttyS0 9600 clocal cread cs8 -cstopb -parenb
要读取串口设置,使用:
stty -F /dev/ttyS0 -a
在最近的版本中,你可以通过以下方式轻松从软件包安装 stty:
opkg update opkg install coreutils-stty
你可以在 menuconfig 中的以下位置找到 stty
Base system -> busybox -> Coreutils -> stty
例如,TP-Link WR741ND V4.x的默认设置为: “console=ttyATH0,115200”
现在的问题是如何更改这个内核命令行参数,目前唯一的方法是自行编译一个带有不同 “console=” 参数的内核。
首先你需要知道需要设置哪个波特率。 在这个例子中,我们使用 TP-LINK WR741ND,它的 UART 串口波特率设置为 115200,我们需要将其更改为 19200。
首先检查你当前路由器使用的波特率和端口,通过 telnet 或 ssh 登录到你的路由器,然后找出当前的设置。通常 UART 串口是 ttyS0 或 ttyATH0。
使用以下命令检查你的串口设置:
fw_printenvlogread | grep tty找到你的配置文件位置:
在 building 你自己的镜像之前编辑文件:
找到你的调制解调器对应的行:
将 “console=ttyATH0,115200” 更改为你需要的速度:
你可以通过 kernel_menuconfig 直接修改内核命令行:
然后你需要使用 'make target/clean world' 重新编译内核并重新刷写固件。