Hello everyone, I managed to successfully launch Wi-Fi via USB adapter based on the MT7601U chipset, below is the instruction on how to do it. !!! Use at your own risk, I am not responsible if something goes wrong !!!
1. How to install:
1.1. Go to "Toolbox" tab and access the internal shell using the "Access Terminal" button on the GL-RM1 Web page (or use SSH)
1.2. Use your PC to copy the glrm1-wifi.tar file (from the attachment below) to a USB flash drive and connect it to your GL-RM1.
1.3. Enter the following command and check that the glrm1-wifi.tar file is displayed in the list. ls -l /media/usb0
(If there are several partitions on the flash drive and the file is not found, try changing usb0 to usb1, usb2, and so on until the file is found.)
1.4. Once the file is located, enter the command below to unpack it and install it on the system. Note the "/" at the end of the line - it is also part of the command! tar -xvf /media/usb0/glrm1-wifi.tar -C /
(Use the USB path from the previous step, it will not always be /media/usb0!)
2. Settings that need to be changed manually:
2.1. The USB adapter IDs and WLAN interface name must be changed in the /etc/kvmd/user/scripts/S10wlan.sh file: VID=148f PID=7601 WLANIF=wlan0
(The values above are for the MT7601U chipset, they do not need to be changed if you have an adapter based on the same chipset.)
2.2. SSID names and passwords for Wi-Fi APs must be set in the /etc/kvmd/user/wpa_supplicant.conf file (sample included):
You can enter your Wi-Fi password in double quotes if it is a cleartext password: psk="your_wifi_password"
or you can use the wpa_passphrase shell command to get the password in a more secure, hashed form. Then the quotes are not needed: wpa_passphrase "YOUR WIFI SSID" "your_wifi_password"
will return the full entry that can be copied and pasted into the /etc/kvmd/user/wpa_supplicant.conf file.
You can specify the priority of the connection to the Wi-Fi network, then if several known networks are detected at once, the connection to the network with the highest priority (and the best signal quality) will be made.
It is necessary to reboot GL-RM1 after making changes to the wpa_supplicant.conf file.
2.3. GL-RM1 will blink blue LED once during boot if everything is done correctly and Wi-Fi adapter was detected and initialized.
3. Notes:
3.1. GL-RM1 listens on all available network interfaces, so both SSH and Web interfaces will be accessible via both wired and Wi-Fi connections.
3.2. The Wi-Fi adapter can be connected via a USB hub, then it can be used simultaneously with a flash drive, for example.
3.3. The script execution log files can be found in the /var/log/wifi-*.log file.
3.4. These scripts withstand firmware updates without any problems (tested on version V1.5.0 beta1).
3.5. Not tested with Cloud functionality and/or Tailscale enabled!
3.6. Text configs are edited using the vim file.conf command in the terminal, this instruction is already quite big, so those who do not know how to use vim can search for it on Google.
PS: I am not a professional Linux admin, so maybe something is not done optimally. I am open to constructive comments, if any.
(The archive is updated, minor changes - missing variable substitution in one script.) glrm1-wifi.tar (6 KB)
I see the LOG_FILE being created:
Thu Jan 1 01:00:14 CET 1970: /etc/init.d/S99custom - wlan0 init...
Thu Jan 1 01:00:16 CET 1970: /etc/init.d/S99custom - wlan0 init done!
But the PID_FILE isn’t there and it doesn’t connect to Wifi.
lsusb says the same as in your instruction:
Bus 001 Device 002: ID 148f:7601
Thanks, but it’s the same. Had the beta1 before, but no difference with the release1 now.
if I use “iwlist scan” after booting, it says:
wlan0 Interface doesn't support scanning : Network is down
After “ip link set wlan0 up” I can scan and it finds my Wifi Network. Looks like wifi is turned off, after booting.
I can then type “wpa_supplicant -B -c /etc/kvmd/user/wpa_supplicant.conf -i wlan0”, but it doesn’t get an IPv4 Address and doesn’t show up in my router also.
I’m not very experienced, this is just what I found out after searching online.
Honestly, I do not understand why you get this error, I do not have it either when launching through the terminal or when launching through the ssh. Can you tell me how do you launching this command?
Try to delete this line completely and restart GL-RM1.
su root /etc/kvmd/user/scripts/wifimon.sh wlan0 INIT
Sun Sep 7 21:40:45 CEST 2025: /etc/kvmd/user/scripts/wifimon.sh - wpa_supplicant init...
killall: wpa_supplicant: no process killed
killall: wpa_cli: no process killed
rm: cannot remove '/var/run/wpa_supplicant/wlan0': No such file or directory
Successfully initialized wpa_supplicant
Sun Sep 7 21:40:46 CEST 2025: /etc/kvmd/user/scripts/wifimon.sh - wpa_supplicant init done!
Sun Sep 7 21:40:46 CEST 2025: /etc/kvmd/user/scripts/wifimon.sh - wpa_cli init...
Selected interface 'wlan0'
Sun Sep 7 21:40:46 CEST 2025: /etc/kvmd/user/scripts/wifimon.sh - wpa_cli init done!
Isn’t connected, though. I’ll try to overwrite your files tomorrow again and start over.
Hello! Thanks for this tutorial, it worked for me as well! The only issue is that my LED keeps blinking as if it’s still trying to connect, even though it is already connected. Also, I get sudden screen refresh every few seconds.
I can also confirm Tailscale works fine without issues when on WiFi.
Thank you for your feedback!
The white LED blinks only because the system's built-in internet monitoring detects whether the eth0 interface is up and running first, then it tries to ping something. This is normal behavior if the ethernet is not connected.
I didn't notice any problems with screen refreshing, but perhaps there are some issues with the quality of the Wi-Fi connection.
I have my GLKVM on an isolated network with no access to the internet or other devices besides the gateway, but still get’s an IP from my DHCP server, it also blinks all the time, but works just fine.
One possible cause is that connman cannot manage the newly added WIFI interface, as NTPD was removed, preventing connman from synchronizing time via WIFI and causing system malfunctions. You may try using the ntpdate command to synchronize the time.