No /dev/ttyACM0 after flashing gnrc_border_router onto nrf52840dongle

Good morning (o;

Long time I’ve used riot-os…so I pulled out my old nrf52840 USB dongles and started with the gnrc_border_router example…

It builds fine and flashes correctly…but after flashing /dev/ttyACM0 is no longer available…and I see in the logs:

Sep 20 10:35:44 blender kernel: [12871.030979] usb 1-5: USB disconnect, device number 19
Sep 20 10:35:44 blender kernel: [12871.032786] xhci_hcd 0000:01:00.0: WARN Set TR Deq Ptr cmd failed due to incorrect slot or ep state.

with the gnrc_networking example I still have /dev/ttyACM0 device and can see the riot-os console…

Anything broken with the border router example and the nrf52840 USB dongle?

thanks in advance richard

Seems I have to add to the Makefile:

USEMODULE += auto_init_usbus
USEMODULE += usbus_cdc_ecm

But then after flashing /dev/ttyACM0 is gone again…but instead I see a new ethernet interface listed as:

enxa63b490bf381: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether a6:3b:49:0b:f3:81  txqueuelen 1000  (Ethernet)

But “make term” still wants to use a serial port…

So how can I use the nrf52840 dongle as a border router? Or it is impossible to use this device?

The stdio_cdc_acm module should be included automatically for this board, but does it help when you add it manually?

@hauke has used this board as a border router not too long ago.

I’m a little further (o;

Of course UPLINK needs to be set to cdc-ecm…so the ACM entry is still there after flashing…

sudo sh /home/me/develop/riot/dist/tools/usb-cdc-ecm/start_network.sh --use-dhcpv6 xxxx:aa08:401f:fff0::/64 /dev/ttyACM0 
Waiting for network interface.
Found interface: enxa63b490bf381
net.ipv6.conf.enxa63b490bf381.forwarding = 1
net.ipv6.conf.enxa63b490bf381.accept_ra = 0
Twisted not available, please install it if you want to use pyterm's JSON capabilities
2021-09-24 12:45:18,753 # Connect to serial port /dev/ttyACM0
Welcome to pyterm!
Type '/exit' to exit.

So how would I now tell the nrf dongle to use the IPv6 prefix from my ISP…

@chrysn provided a guide for that: [WIP] gnrc_border_router usability improvements by chrysn · Pull Request #16840 · RIOT-OS/RIOT · GitHub

Well…not really a guide (o; But no help when applying the changes…

Not even the the interface 6 ipv6 address is pingable from the host…or vice versa…

Doesn’t even show a L2 neighbour address for the wired link:

2021-09-24 13:54:53,781 # Neighbor link layer stats:
2021-09-24 13:54:53,782 # L2 address               fresh  etx sent received   rssi  lqi avg tx time
2021-09-24 13:54:53,783 # -------------------------------------------------------------------------
2021-09-24 13:54:53,783 # Neighbor link layer stats:
2021-09-24 13:54:53,784 # L2 address               fresh  etx sent received   rssi  lqi avg tx time
2021-09-24 13:54:53,785 # -------------------------------------------------------------------------
2021-09-24 13:54:53,786 # A6:3B:49:0B:F3:81           16 200%    0       16    0 dBm 0       0 µs