GL-RM1 USB WiFi dongle howto guide + scripts

This worked perfectly for me. Thanks again for the quick support!

Any chance we could get an update for RM1 on this? I’d hate to be stuck on FW 1.5 if I wanted wifi on it! You must be busy with Comet Q development right now though (which I pre-ordered) but I’m still holding my hopes up for my trusty original one.

I checked the RK's built-in driver that I deleted is for supporting Broadcom chips. I'm not entirely sure what the issue is, and I don't have this Wi-Fi card on hand for testing, so I can't provide the firmware for you.

I had some time for testing today, here are my findings.

v1.9.0 RM1 does not include any firmware:

bash-4.4# ls -l /lib/firmware/
total 0
drwxr-xr-x 2 root root 3 Apr 27  2026 rtlbt

comparison with 1.5.0 RM1 firmware:

bash-4.4# ls -l /lib/firmware/
total 45
drwxr-xr-x 2 root root    40 Sep  1  2025 ath9k_htc
-rw-r--r-- 1 root root 45412 Sep  1  2025 mt7601u.bin
drwxr-xr-x 2 root root     3 Sep  1  2025 rtlbt

I then copied the firmware from FW 1.5.0 with

mkdir -p /mnt/usb
mount /dev/sda1 /mnt/usb
cp -v /lib/firmware/mt7601u.bin /mnt/usb/mt7601u.bin
sync
umount /mnt/usb

and back to FW 1.9.0 with

mkdir -p /mnt/usb
mount /dev/sda1 /mnt/usb
mkdir -p /lib/firmware
cp -v /mnt/usb/mt7601u.bin /lib/firmware/mt7601u.bin
chmod 644 /lib/firmware/mt7601u.bin
sync
umount /mnt/usb

Now if I run ip link set wlan0 up, I get

RTNETLINK answers: Operation not possible due to RF-kill

I then run

for f in /sys/class/rfkill/rfkill*/state; do
  echo 1 > "$f"
done

ip link set wlan0 up now shows a working connection

I then edited the wifimon.sh script to include the rfkill command above:

#!/bin/bash
if [ $# -eq 0 ]; then
  echo "Error: No arguments provided."
  echo "Usage: $0 wlan0 INIT"
  exit 1
fi

PID_FILE="/var/run/udhcpc.$1.pid"
LOG_FILE="/var/log/wifi-$1.log"

exec > >(tee -a "$LOG_FILE") 2>&1

case "$2" in
  INIT)
    echo "$(date): $0 - wpa_supplicant init..."
    killall wpa_supplicant 2>/dev/null
    killall wpa_cli 2>/dev/null
    rm -f "/var/run/wpa_supplicant/$1"

    echo "$(date): $0 - unblocking rfkill..."

    for i in $(seq 1 30); do
      for f in /sys/class/rfkill/rfkill*/state; do
        [ -e "$f" ] || continue
        echo 1 > "$f" 2>/dev/null
      done

      RFKILL_STATE="$(cat /sys/class/rfkill/rfkill*/state 2>/dev/null | tr -d '\n')"
      echo "$(date): $0 - rfkill state: $RFKILL_STATE"

      if echo "$RFKILL_STATE" | grep -q 1; then
        echo "$(date): $0 - rfkill unblocked"
        break
      fi

      sleep 1
    done

    if cat /sys/class/rfkill/rfkill*/state 2>/dev/null | grep -q '^0$'; then
      echo "$(date): $0 - ERROR: rfkill still blocked, aborting"
      exit 1
    fi

    echo "$(date): $0 - waiting for interface $1..."

    for i in $(seq 1 20); do
      if ip link show "$1" >/dev/null 2>&1; then
        break
      fi
      sleep 1
    done

    echo "$(date): $0 - bringing $1 up..."
    ip link set "$1" up

    echo "$(date): $0 - starting wpa_supplicant..."
    wpa_supplicant -B -i "$1" -D nl80211 -c /etc/kvmd/user/wpa_supplicant.conf

    echo "$(date): $0 - wpa_supplicant init done!"
    echo "$(date): $0 - wpa_cli init..."

    wpa_cli -B -i "$1" -a /etc/kvmd/user/scripts/wifimon.sh

    echo "$(date): $0 - wpa_cli init done!"
    ;;
  CONNECTED)
    echo "$(date): $0 - wpa_supplicant: $1 connected to $WPA_ID_STR ($WPA_ID)"
    [ -f "$PID_FILE" ] && pkill -F "$PID_FILE"
    echo "$(date): $0 - udhcpc init..."
    udhcpc -R -n -p "$PID_FILE" -i "$1"
    echo "$(date): $0 - udhcpc init done!"
    ;;
  DISCONNECTED)
    echo "$(date): $0 - wpa_supplicant: $1 disconnected from $WPA_ID_STR ($WPA_ID)"
    [ -f "$PID_FILE" ] && pkill -F "$PID_FILE"
    ;;
esac

But then on reboot the script does not run. Manually calling it makes it work:

/etc/kvmd/user/scripts/wifimon.sh wlan0 INIT

Any ideas? I’ve reached my limits of troubleshooting here but it feels like I’m really close. The user script doesn’t seem to want to run at boot.

The issue lies with these two firmware —one is for MediaTek chipsets, and the other is for Qualcomm chipsets. They are not for Realtek chipset products. You might have been looking in the wrong place from the start.

I don’t really follow what you’re saying. I proved that the mt7601u bin file exists in FW 1.5.0 but is absent in FW 1.9.0. I described step by step what I had to do to make it work, but can't make it survive a reboot.

Edit to clarify - I initially asked whether Realtek drivers could be installed but then I ended up purchasing the adapter from the OPs post so ignore the Realtek post.

connmanctl enable wifi
ifconfig wlan0 up
vim /etc/wpa_supplicant.conf 
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B
udhcpc -i wlan0

Maybe you can try this one. The whole network system was controlled by Connman, so you need to enable it Command first.

You mentioned that the WiFi firmware is missing on the RM1. I checked and indeed it is. It will be resolved in the next version; we might have encountered some issues during compilation.

If I run connmanctl enable wifi and then run /etc/kvmd/user/scripts/wifimon.sh wlan0 INIT that works, however it does not survive a reboot as the script doesn’t seem to run at start.

The wpa_supplicant command you linked in the etc folder does not initialise because of the below. If I don’t install the OPs scripts the wifi adapter isn’t seen by connman.

bash-4.4# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B

Successfully initialized wpa_supplicant
ctrl_iface exists and seems to be in use - cannot override it
Delete '/var/run/wpa_supplicant/wlan0' manually if it is not used anymore
Failed to initialize control interface '/var/run/wpa_supplicant'.
You may have another wpa_supplicant process already running or the file was
left by an unclean termination of wpa_supplicant in which case you will need
to manually remove this file before starting wpa_supplicant again.

nl80211: deinit ifname=wlan0 disabled_11b_rates=0