Forlinx iMX93 Development Board Achieves Routing Functionality: Bridge Setup, 4G Forwarding, and Device Configuration

Forlinx

Apr 23, 2023
107
Joined
Apr 23, 2023
Messages
107
Routing is a core component of device networking, responsible for intelligent data packet forwarding, ensuring efficient communication and internet access. It also assigns IP addresses to devices connected via the network interface, ensuring stable and secure connections. Below is a guide on how to implement routing functionality on the Forlinx i.MX93 platform.


1. Bridge Building



1.1 Busybox Compilation and Brctl Tool Loading


There is no brctl tool in the busybox of the 93 development board, so it needs to be recompiled. If the busybox of the board has the brctl tool, this step can be ignored.

Down load busybox-1.35 source code, website: https://busybox.net/

Unzip it on the 93 development environment and execute make menuconfig to configure.

forlinx@ubuntu:~/work/busybox$ tar -xvf busybox-1.35.0.tar.bz2
forlinx@ubuntu:~/work/busybox$ cd busybox-1.35.0/
forlinx@ubuntu:~/work/busybox/busybox-1.35.0$ . /opt/fsl-imx-xwayland/5.15-kirkstone/environment-setup-armv8a-poky-linux
forlinx@ubuntu:~/work/busybox/busybox-1.35.0$ make menuconfig


Select Setting-->[*]Don't use /usr


In this way, it will be installed to the directory specified by itself (default./_ install). This option must be selected, otherwise busybox will be installed under/usr of the original system after make install, which will overwrite the original commands of the system. After selecting this, make install will generate the _ install directory under the busybox directory, which contains the busybox and the link pointing to it.



Add cross-compilation path (it can be set according to your own requirements):
Setting-->--- Build Options

(arch64-poky-linux-) Cross compiler prefix
(/opt/fsl-imx-xwayland/5.15-kirkstone/sysroots/armv8a-poky-linux) Path to sysroot
(-O2 -pipe -g -feliminate-unused-debug-types) Additional CFLAGS
(-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now) Additional LDFLAGS


file.php


Select brctl tool

Networking Utilities --->[*]brctl (4.7 kb)

file.php


Modify and then compile

forlinx@ubuntu:~/work/busybox/busybox-1.35.0$ make
forlinx@ubuntu:~/work/busybox/busybox-1.35.0$ make install


Copy the generated busybox command to the development board/home/root path


1.2 Kernel Source Code Modification


forlinx@ubuntu:~/work/ok-mx93/OKMX93-linux-sdk/OKMX93-linux-kernel$ vi drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
(478 line)
/* if (hw->promisc) {
netdev_err(dev,
“Adding VLAN in promisc mode not supported\n");
return -EPERM;
}*/
(533 line)
/* if (hw->promisc) {
netdev_err(dev,
"Deleting VLAN in promisc mode not supported\n");
return -EPERM;
}*/


Save and recompile the kernel after modification, generate Image and update the kernel


1.3 Building a Bridge With Brctl


root@ok-mx93:~# ./busybox brctl addbr br0 //Create bridge device br0
root@ok-mx93:~# ./busybox brctl stp br0 off //Turn off the STP
root@ok-mx93:~# ./busybox brctl addif br0 eth0 //Add eth0 to the bridge
root@ok-mx93:~# ./busybox brctl addif br0 eth1 //Add eth1 to the bridge
root@ok-mx93:~# ifconfig br0 192.168.0.10 up configure br0 ip and start it


2. 4G for Network Forwarding



2.1 4G Dial-up



If there is command service, you need to delete it and restart.

root@ok-mx93:~# rm /usr/sbin/connmand
root@ok-mx93:~# sync
root@ok-mx93:~# reboot
root@ok-mx93:~# fltest_quectel.sh
root@ok-mx93:~# ifconfig eth0 up
root@ok-mx93:~# ifconfig eth1 up


Note: The network port will be closed in the 93 dial-up script. If it is not necessary, you can comment out the command to close the network port in the script.


2.2 Route Priority Adjustment


Checking with ''route -n'' reveals that the priorities of eth0 and eth1 are higher than 4G. At this point, 4G cannot access the Internet, so it is necessary to adjust the priorities to avoid affecting the 4G network.

root@ok-mx93:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth1
0.0.0.0 10.137.251.242 0.0.0.0 UG 10 0 0 usb0
10.137.251.240 0.0.0.0 255.255.255.252 U 0 0 0 usb0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1


Modify the metric parameter to change the priority.

root@ok-mx93:~# route del default gw 192.168.1.1
root@ok-mx93:~# route del default gw 192.168.2.1
root@ok-mx93:~# route add default gw 192.168.1.1 dev eth0 metric 11
root@ok-mx93:~# route add default gw 192.168.2.1 dev eth1 metric 11
root@ok-mx93:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.137.251.242 0.0.0.0 UG 10 0 0 usb0
0.0.0.0 192.168.2.1 0.0.0.0 UG 11 0 0 eth1
0.0.0.0 192.168.1.1 0.0.0.0 UG 11 0 0 eth0
10.137.251.240 0.0.0.0 255.255.255.252 U 0 0 0 usb0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1


After modification, 4G can access the Internet normally.

root@ok-mx93:~# ping www.baidu.com
PING www.a.shifen.com (39.156.66.18) 56(84) bytes of data.
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=1 ttl=51 time=32.7 ms
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=2 ttl=51 time=31.4 ms
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=3 ttl=51 time=29.3 ms
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=4 ttl=51 time=29.1 ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 29.066/30.612/32.663/1.494 ms


2.3 4G Forwarding



Turn on IP to forward.

root@ok-mx93:~# echo 1 > /proc/sys/net/ipv4/ip_forward


Set forwarding rules.

root@ok-mx93:~# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o usb0 -jMASQUERADE
root@ok-mx93:~# iptables -A FORWARD -i br0 -j ACCEPT


Configure the udhcpd service and modify the/etc/udhcpd. conf films.

root@ok-mx93:~# vi /etc/udhcpd.conf
...
# The start and end of the IP lease block
start 192.168.0.100
end 192.168.0.254
# The interface that udhcpd will use
interface br0
...
# Examples:
opt dns 114.114.114.114
option subnet 255.255.255.0
opt router 192.168.0.10


file.php


file.php


Turn on the udhcpd service

root@ok-mx93:~# udhcpd /etc/udhcpd.conf &


3. Computer and Device Side



Set both the computer and the device to obtain IP automatically.

After obtaining the IP, the two can access the external network and ping each other.

 

Attachments

  • simplified schematic of the motor driver circuit.png
    simplified schematic of the motor driver circuit.png
    6.2 KB · Views: 0
Top