RPi Compute Module 4 with DFRobot dual gigabit RJ45 ports

Ok after struggling yesterday to get this working with 22.03 rc6 I now have it working.

I thought I'd share tips in case it helps anyone.

So I had already read these:
https://wiki.dfrobot.com/Compute_Module_4_IoT_Router_Board_Mini_SKU_DFR0767

https://gist.github.com/dergeberl/56a4d29e62acd9aea96e220c64254317

https://gist.github.com/ionspin/180437c1580f9a2a1c4f1e8d532b9f27

Its easy to use the official DFRobot image which is 21.03

However getting 22.03 rc6 to work, I couldn't get it with the above links.

It's quite a nice little thing !

My steps for a simple way to get it working (I don't have the intelligence to build a new image myself :laughing:):

  1. Use the OpenWrt online builder for custom image build of the RPi4 image, and just add these to the text field to include in the custom image: "kmod-r8169 kmod-usb-dwc2 bcm27xx-userland"

  2. Change the following in rootfs on microSD card:

/etc/config/dhcp:

config dnsmasq
        option domainneeded     1
        option boguspriv        1
        option filterwin2k      0  # enable for dial on demand
        option localise_queries 1
        option rebind_protection 1  # disable if upstream must serve RFC1918 addresses
        option rebind_localhost 1  # enable for RBL checking and similar services
        #list rebind_domain example.lan  # whitelist RFC1918 responses for domains
        option local    '/lan/'
        option domain   'lan'
        option expandhosts      1
        option nonegcache       0
        option authoritative    1
        option readethers       1
        option leasefile        '/tmp/dhcp.leases'
        option resolvfile       '/tmp/resolv.conf.d/resolv.conf.auto'
        #list server            '/mycompany.local/1.2.3.4'
        option nonwildcard      1 # bind to & keep track of interfaces
        #list interface         br-lan
        #list notinterface      lo
        #list bogusnxdomain     '64.94.110.11'
        option localservice     1  # disable to allow DNS requests from non-local subnets
        option ednspacket_max   1232

config dhcp lan
        option interface        lan
        option start    100
        option limit    150
        option leasetime        12h

config dhcp wan
        option interface        wan
        option ignore   1

/etc/config/network : (you need to actually create this)

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd73:a89e:d007::/48'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'eth1'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wan'
        option device 'eth0'
        option proto 'dhcp'
  1. If you need to use the USB-C port (USB2 speed) then change this on the microSD card:

/boot/config.txt add this line

dtoverlay=dwc2,dr_mode=host

  1. If you need Luci then after the 1st boot (I didn't realise it would be missing !)
opkg update

opkg install luci

opkg update

opkg install luci-ssl

/etc/init.d/uhttpd restart
1 Like

I had to hack away at the case for better access to the 2 x USB-C ports

https://www.dfrobot.com/product-2410.html

https://www.dfrobot.com/product-2242.html

The RPi booster antenna I purchased is garbage. I am using an MT7612U chipset USB to WiFi adapter which is really well supported in OpenWrt. It allows proper adjustment of Tx power which I need too.

2 Likes