At the beginning of learning OpenWRT, I used the MT7628 development board and downloaded firmware from the official website as well as firmware generated using selectors. Through ls/dev/ttyS * query, I found that there were 16 serial devices (ttyS0-15) inside, while MT7628 only had a maximum of 3.
How to turn off everything else, keep only ttyS0-2, and then use the ser2net feature of openwrt.
Please post output of
ubus call system board
I got these messages:
wukong@wukongCam:~# ls /dev/ttyS*
/dev/ttyS0 /dev/ttyS10 /dev/ttyS12 /dev/ttyS14 /dev/ttyS2 /dev/ttyS4 /dev/ttyS6 /dev/ttyS8
/dev/ttyS1 /dev/ttyS11 /dev/ttyS13 /dev/ttyS15 /dev/ttyS3 /dev/ttyS5 /dev/ttyS7 /dev/ttyS9
wukong@wukongCam:~# ubus call system board
{
"kernel": "5.15.167",
"hostname": "OpenWrt",
"system": "MediaTek MT7628AN ver:1 eco:2",
"model": "Mediatek MT7628AN evaluation board",
"board_name": "mediatek,mt7628an-eval-board",
"rootfs_type": "squashfs",
"release": {
"distribution": "OpenWrt",
"version": "23.05.5",
"revision": "r24106-10cc5fcd00",
"target": "ramips/mt76x8",
"description": "OpenWrt 23.05.5 r24106-10cc5fcd00"
}
}
Olny ttyS0 is enable,ttyS1 and ttyS2 are disable
wukong@wukongCam:~# ls -l /dev/tty*
crw-rw-rw- 1 wukong root 5, 0 Jan 1 1970 /dev/tty
crw-rw---- 1 wukong dialout 4, 64 Jan 1 1970 /dev/ttyS0
crw-rw---- 1 wukong dialout 4, 65 Jan 1 1970 /dev/ttyS1
crw-rw---- 1 wukong dialout 4, 74 Jan 1 1970 /dev/ttyS10
crw-rw---- 1 wukong dialout 4, 75 Jan 1 1970 /dev/ttyS11
crw-rw---- 1 wukong dialout 4, 76 Jan 1 1970 /dev/ttyS12
crw-rw---- 1 wukong dialout 4, 77 Jan 1 1970 /dev/ttyS13
crw-rw---- 1 wukong dialout 4, 78 Jan 1 1970 /dev/ttyS14
crw-rw---- 1 wukong dialout 4, 79 Jan 1 1970 /dev/ttyS15
crw-rw---- 1 wukong dialout 4, 66 Jan 1 1970 /dev/ttyS2
crw-rw---- 1 wukong dialout 4, 67 Jan 1 1970 /dev/ttyS3
crw-rw---- 1 wukong dialout 4, 68 Jan 1 1970 /dev/ttyS4
crw-rw---- 1 wukong dialout 4, 69 Jan 1 1970 /dev/ttyS5
crw-rw---- 1 wukong dialout 4, 70 Jan 1 1970 /dev/ttyS6
crw-rw---- 1 wukong dialout 4, 71 Jan 1 1970 /dev/ttyS7
crw-rw---- 1 wukong dialout 4, 72 Jan 1 1970 /dev/ttyS8
crw-rw---- 1 wukong dialout 4, 73 Jan 1 1970 /dev/ttyS9
wukong@wukongCam:~# stty -F /dev/ttyS0
speed 57600 baud; line = 0;
-brkint -imaxbel
wukong@wukongCam:~# stty -F /dev/ttyS1
stty: /dev/ttyS1: I/O error
wukong@wukongCam:~# stty -F /dev/ttyS2
stty: /dev/ttyS2: I/O error
serial core driver allocates 16 ports by default, since it is built-in you have to check serial.xxxx param in source and pass one at boot.
chevk /sys/class/tty/ , 8250 is default driver for unconfigured.
MT7628 only has three serial ports, ttyS0 as debugging output and ttyS1 as serial port transparent transmission. I have seen other posts indicating the need to set the number of serial ports to 3, and then set ttyS1 and ttyS2 to OK in DTS. But I don't know how to compile, I don't know if this version is generated. Or how to set on or off when using official firmware, as well as specify its serial port baud rate, I don't know if there are similar software packages available
wukong@wukongCam:~# setserial -g /dev/ttyS0
/dev/ttyS0, UART: 16550A, Port: 0x0000, IRQ: 28
wukong@wukongCam:~# setserial -g /dev/ttyS1
/dev/ttyS1, UART: unknown, Port: 0x0000, IRQ: 0
uart1: uart1@d00 {
compatible = "ns16550a";
reg = <0xd00 0x100>;
reg-shift = <2>;
reg-io-width = <4>;
no-loopback-test;
clock-frequency = <40000000>;
resets = <&rstctrl 19>;
reset-names = "uart1";
interrupt-parent = <&intc>;
interrupts = <21>;
pinctrl-names = "default";
pinctrl-0 = <&uart1_pins>;
#status = "disabled";
};
Strange they are not added in order , check the /sys/class/tty , not dev, it has alternative view on what is detected.
wukong@wukongCam:~# setserial -g /dev/ttyS0
/dev/ttyS0, UART: 16550A, Port: 0x0000, IRQ: 28
wukong@wukongCam:~# setserial -g /dev/ttyS1
/dev/ttyS1, UART: unknown, Port: 0x0000, IRQ: 0
wukong@wukongCam:~# setserial /dev/ttyS1 uart 16550A
Cannot set serial info: Invalid argument
I know, but this is normal, if you want to reduce or increase serial port count you have to pass boot parameters, and in this case with OpenWRT you must rebuild kernel.
Thanks for your reply.
Looong ago it was 4.
You have to compile (not imagebuilder) the kernel, and configure following in kernel command line:
nr_uarts= [SERIAL] maximum number of UARTs to be registered.
REF: https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html