# Microdds not working with Microhard modem

Source: https://forum.modalai.com/topic/5043/microdds-not-working-with-microhard-modem
Category: General Questions (https://forum.modalai.com/category/2/general-questions)
Posted: 2026-02-09 21:42:11 UTC by voxltester
Replies: 9 · Views: 1186

## voxltester · 2026-02-09 21:42:11 UTC

I installed a Microhard modem (192.168.168.200) and connected a Wi-Fi dongle to the USB port on the modem. I used MicroDDS through Wi-Fi and the Microhard modem.

One day, I tried to use MicroDDS without the Wi-Fi dongle connected, but systemctl start voxl-microdds-agent did not work. When I reconnected the Wi-Fi dongle to the Microhard modem, MicroDDS worked.
Then I removed the dongle and ran `systemctl restart voxl-microdds-agent`, and it worked.

However, when I restart the whole system and try to run it again without the Wi-Fi dongle, it does not work.

Do you have any ideas on how to resolve this?

## Reply by Zachary Lowell 0 · 2026-02-11 19:46:36 UTC

@voxltester said in [Microdds not working with Microhard modem](/post/25181):
> Do you have any ideas on how to resolve this?
> 
> 

There might be a dependency in the service file - I would recommend taking a look at the file in /etc/systemd/system/voxl-microdds-agent.service and see if there are any dependencies on having WLAN devices plugged in - I am under the impression there is not that dependency, but there is a conflict on which interface you want the dds to start on - so ideally you can add in which interface you wish to leverage into the service file.

Zach

## Reply by voxltester · 2026-02-12 16:52:22 UTC (in reply to Zachary Lowell 0)

@Zachary-Lowell-0 
Thank you for the reply.

I have
```
starling2-max (D0012):/etc/systemd/system$ cat voxl-microdds-agent.service
[Unit]
Description=voxl-microdds-agent
SourcePath=/usr/bin/MicroXRCEAgent
After=network.target
After=multi-user.target

[Service]
User=root
Type=simple
ExecStart=/usr/bin/MicroXRCEAgent udp4 -p 8888

[Install]
WantedBy=multi-user.target
```

Without wifi dongle connection on the Microhard, `ifconfig` shows the following.
(usb0 has some ip address, but it is not connected to the internet.)
```
starling2-max (D0012):~$ ifconfig
bond0: flags=5123<UP,BROADCAST,MASTER,MULTICAST>  mtu 1500
        ether 86:ee:9c:db:b7:95  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:c4:45:1a:c1  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

dummy0: flags=195<UP,BROADCAST,RUNNING,NOARP>  mtu 1500
        inet6 fe80::132b:a2c8:d911:3f45  prefixlen 64  scopeid 0x20<link>
        ether ca:65:d5:16:98:25  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12  bytes 3016 (3.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.168.200  netmask 255.255.255.0  broadcast 192.168.168.255
        ether de:d6:13:4b:a9:2b  txqueuelen 1000  (Ethernet)
        RX packets 547  bytes 45029 (45.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16318  bytes 1421239 (1.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 103585  bytes 10271086 (10.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 103585  bytes 10271086 (10.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.168.129  netmask 255.255.255.0  broadcast 192.168.168.255
        inet6 fe80::98ff:2cbd:5466:7523  prefixlen 64  scopeid 0x20<link>
        ether fe:94:fc:bb:e7:35  txqueuelen 1000  (Ethernet)
        RX packets 45  bytes 3314 (3.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16125  bytes 1971107 (1.9 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
```

With wifi dongle connection, it shows,
```
starling2-max (D0012):~$ ifconfig
bond0: flags=5123<UP,BROADCAST,MASTER,MULTICAST>  mtu 1500
        ether 86:ee:9c:db:b7:95  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:c4:45:1a:c1  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

dummy0: flags=195<UP,BROADCAST,RUNNING,NOARP>  mtu 1500
        inet6 fe80::132b:a2c8:d911:3f45  prefixlen 64  scopeid 0x20<link>
        ether ca:65:d5:16:98:25  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 3700 (3.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.168.200  netmask 255.255.255.0  broadcast 192.168.168.255
        ether de:d6:13:4b:a9:2b  txqueuelen 1000  (Ethernet)
        RX packets 817  bytes 70121 (70.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 27316  bytes 2378842 (2.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 173906  bytes 17693833 (17.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 173906  bytes 17693833 (17.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.168.129  netmask 255.255.255.0  broadcast 192.168.168.255
        inet6 fe80::98ff:2cbd:5466:7523  prefixlen 64  scopeid 0x20<link>
        ether fe:94:fc:bb:e7:35  txqueuelen 1000  (Ethernet)
        RX packets 56  bytes 9514 (9.5 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 27087  bytes 3316350 (3.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 2312
        inet 192.168.1.37  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 2600:382:7e14:bcce:2402:aa6e:a4c1:5dcf  prefixlen 64  scopeid 0x0<global>
        inet6 2600:382:7e14:bcce:c2b4:933b:c203:7fa2  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::9b2b:25cd:8cd9:5cec  prefixlen 64  scopeid 0x20<link>
        ether 00:c0:ca:b5:ab:91  txqueuelen 1000  (Ethernet)
        RX packets 2166  bytes 1162499 (1.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 69  bytes 15194 (15.1 KB)
        TX errors 0  dropped 6 overruns 0  carrier 0  collisions 0
```
I’m not sure what I did, but I think `wlan0` should be assigned to the Microhard instead of `eth0`.
Or maybe the Microhard should remain on eth0, and `wlan0` should also come up with its own IP address, even if it’s not used for internet access...

This is because when the Wi-Fi dongle is connected, wlan0 comes up and MicroDDS starts working....

## Reply by voxltester · 2026-02-12 18:54:02 UTC (in reply to Zachary Lowell 0)

@Zachary-Lowell-0 

Before factory reset, I am wondering if you have any comment...

## Reply by voxltester · 2026-02-17 19:25:49 UTC (in reply to Zachary Lowell 0)

@Zachary-Lowell-0 @tom @ZuraNeb 
Something wrong with the network and microhard.
Even though I did factory reset the voxl2, the same problem is happening.

Is there any one who is an expert on the microhard and network setting?

## Reply by Zachary Lowell 0 · 2026-02-18 21:24:13 UTC

@voxltester said in [Microdds not working with Microhard modem](/post/25280):
> Is there any one who is an expert on the microhard and network setting?
> 
> 

You will need to reach out to microhard for config setup on that front.

## Reply by voxltester · 2026-02-19 17:18:56 UTC (in reply to Zachary Lowell 0)

@Zachary-Lowell-0
Hi,
I figured out that `voxl-microdds-agent` does't work when I set up `voxl-wifi` for the Wi-Fi... even after removing the Wi-Fi dongle...
I had to disable the Wi-Fi by selecting `4) Disable WiFi (disables all active modes)` and reboot in order to run `voxl-microdds-agent` properly, and then I was able to see the ROS 2 topics...

I do not know exactly what version I used, but it was not like this before... I did not need to disable Wi-Fi in the `voxl-wifi` setting..

## Reply by ApoorvThapliyal · 2026-02-26 22:28:00 UTC (in reply to voxltester)

@voxltester,
When you say `voxl-microdds-agent` doesnt work, do you mean it doesnt run? Or it doesnt create the topics? Whats the terminal output when you run it directly from the terminal?
Is your setup like earlier where you have the hat on and the wifi dongle is connected on the hat?

If the topics are only showing up after disabling the wifi interface, then I suspect its a ip routing issue, and that voxl microdds agent  is binding to the first interface that comes up, which is the wifi.

## Reply by voxltester · 2026-03-04 18:41:04 UTC (in reply to ApoorvThapliyal)

@ApoorvThapliyal 
When I said `voxl-microdds-agent` was not working, I meant that I couldn’t see any ROS 2 topics using `ros2 topic list` on either my computer or the VOXL2.
Even after removing the WiFi dongle from the VOXL2, `voxl-wifi` was still set to station mode, and no topics appeared when running `ros2 topic list`.
At first, I thought it was a network configuration issue, but it turned out to be related to `voxl-wifi`.

You can reproduce the same issue using `SDK 1.6.0` (the version I used) by enabling `voxl-wifi` in station mode with a WiFi dongle, then removing the WiFi dongle and connecting the VOXL2 through Microhard after rebooting.

## Reply by ApoorvThapliyal · 2026-03-05 19:18:30 UTC (in reply to voxltester)

Hey @voxltester  
It seems there is an issue with how MicroXRCE and the microhard modem interfaces are starting up, I had to edit the service files to get the topics on the VOXL2.
Edit `/etc/systemd/system/voxl-microdds-agent.service`:
```bash
[Unit]
Description=voxl-microdds-agent
SourcePath=/usr/bin/MicroXRCEAgent
After=network.target
After=multi-user.target

[Service]
User=root
Type=simple
ExecStart=/usr/bin/MicroXRCEAgent udp4 -p 8888

[Install]
WantedBy=multi-user.target
```
Edit `/etc/systemd/system/voxl-modem.service`:
```bash
[Unit]
Description=Modem Initialization
After=sdsprpcd.service

[Service]
User=root
Type=oneshot
ExecStartPre=/bin/sleep 2
ExecStart=/usr/bin/voxl-modem-start
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
```

Add `export ROS_DOMAIN_ID=0` to your `.bashrc`
Reboot the VOXL2, and the topics should come up
Thanks
