Xiaomi WiFi Router 3G

Hi hammer,

could you explain how to compile and install the firmware with the hardware whatchdog?

I’ve updated @hammer instructions with recent findings, @r43k3n could you put these instructions into 1st post?

This is how I got LEDE installed. Some of the steps can be done differently. I used this for inspiration https://www.youtube.com/watch?v=CSHNyo5QxaQ

Unbox router
Connect to the router using WiFi
Goto http://192.168.31.1

Go through the wizard to set passwords for the router + wifi
Reconnect to the router using WiFi
Goto http://192.168.31.1

Logon and find the page where you can upgrade the firmware look for a big yellow dot with an “i” inside. You will see the version number of the router and there is a button below where you can browse for a file. Flash miwifi_r3g_firmware_c2175_2.25.122.bin (developer firmware) and wait a few minutes.
Download https://play.google.com/store/apps/details?id=com.xiaomi.router to your phone/tablet (there is also an iOS app)
Open “Mi Wi-Fi” app (and sign-up) and sign-in to your account. Router will be detected and added to your account (assuming you are connected to the WiFi on the router and the routers WAN port is connected to Internet).
On a PC, visit http://d.miwifi.com/rom/ssh and sign-in to you account. You will get to a page that should display your router, the root password and a download button. Hit the button to get miwifi_ssh.bin
Format USB drive using FAT32 and copy miwifi_ssh.bin, lede-ramips-mt7621-mir3g-squashfs-kernel1.bin and lede-ramips-mt7621-mir3g-squashfs-rootfs0.bin to the USB drive
Cut the power the router, put the USB drive in the router, press and hold “reset” button (with a paper-clip), power on the router (while holding reset). When the router starts flashing yellow release the reset button. Wait until router has rebooted and you should (finally…) have SSH access.
Login to the router using SSH using the “root” as username and the (root) “password” from http://d.miwifi.com/rom/ssh

In SSH console

cd /extdisks/sda1 (can be different if you remove and reinsert the usb stick)

mtd write lede-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel1

mtd write lede-ramips-mt7621-mir3g-squashfs-rootfs0.bin rootfs0

nvram set flag_try_sys1_failed=1

nvram commit

reboot
LEDE should be installed and available at 192.168.1.1 (with WiFi disabled I assume)
Upgrading to a newer snapshot can be done using the regular methods (from the command-line using sysupgrade or through LuCI) using lede-ramips-mt7621-mir3g-squashfs-sysupgrade.tar

2 Likes

@dissent1 I included your instructions in first post. I modified it a bit for better readability. I hope you don't mind.

1 Like

I would recommend adding the link to download the dev build on step 8, also it would be more clear if download the android app link will be on the next step.

In addition, could you please add a section of known issues and add there the issue which affect some of the users when trying to connect to the 2.4GHz:
daemon.notice hostapd: wlan0: STA XX:XX:XX:XX:XX:XX IEEE 802.11: did not acknowledge authentication response

I have been testing Openvpn client, as one of the main attractions of this router was the relatively powerful processor compared to price.

However using Lede I could only use 25% of the CPU, just 1 thread, and this is proving a real bottleneck and is reducing my download speed by 60%.

Has anyone tried using the IRQBalance package? Is there a method to give the encryption processing it's own dedicated thread?

At present I am testing Openvpn in Padavan, and this seems to have the same problem.

Using an android TV box, without Openvpn I get 50Mbps.

With OpenVPN running as an app on the TV Box, over ethernet I get 46Mbps
Over WiFi I get about the same.

With OpenVPN running as a client on the router over ethernet I get 30Mbps, over Wifi I get 20Mbps.

I was told sometime ago that OpenVPN only works on 1 thread of the CPU. I don't know if this is an OpenVPN or LEDE limitation. Have you tried IPsec?

Per your request I added "Known Issues" section. If there are any other known issues, even if they are temporary it's better to mention them right know to give potential buyers better image of the situation. We can delete them later.
I don't have this device on hand. If you can provide those link you mentioned I will add them to the instruction.

Great, the latest dev FW can be downloaded from here:
http://www.miwifi.com/miwifi_download.html ,
The direct link to dev FW 2175.2.25.122: http://bigota.miwifi.com/xiaoqiang/rom/r3g/miwifi_r3g_firmware_c2175_2.25.122.bin

This issue can be solved with
option disassoc_low_ack '0'
in /etc/config/wireless section where ssid and passwords are set

2 Likes

Thanks, i will check and give feedback

Setting disassoc_low_ack '0’ does not solve the issue for me, below are the settings from my /etc/config/wireless.

As I mentioned before, it appears to be related to the distance from the router and never happens if I'm in the same room as the router, although in the room which this issue is seen is not really far and the signal strength is good (-56dBm according to wifi analyzer).

Also, the connection to the 2.4GHz is stable after I'm already connected even if I move to the room which the issue was reproducing in the 1st place, but if I disconnect than I will probably not be able to reconnect again.

config wifi-device 'radio0'
        option type 'mac80211'
        option hwmode '11g'
        option path 'pci0000:00/0000:00:00.0/0000:01:00.0'
        option country 'IL'
        option channel '9'
        option distance '15'
        option log_level '4'
        option htmode 'HT40'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid '....24'
        option key 'XXXXXXXXXXXX'
        option disassoc_low_ack '0'
        option encryption 'psk2+ccmp'
        option wpa_group_rekey '1800'
        
config wifi-device 'radio1'
        option type 'mac80211'
        option hwmode '11a'
        option path 'pci0000:00/0000:00:01.0/0000:02:00.0'
        option channel 'auto'
        option country 'IL'
        option distance '7'
        option htmode 'VHT80'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option encryption 'psk2'
        option key 'XXXXXXXXXXXX'
        option ssid '....50'

Same problem for me.
Some person have this problem other don't have this problem.
Maybe there is something common (in the configuration/ hardware/ or environment/ snapshot version)

Please if you have this problem reply so we can count how many person have this problem and compare.

For the other (not having the problem)
Do you use the 2.4g ?

Hello all, im new here and waiting for that router from gearbest, i have question to people that have wifi 2.4Ghz problems - does that problem occur in xiaomi original firmware ? or only on LEDE :slight_smile: ?

Sorry I can not answer, I have not tested the original firmware because it's. In Chinese.
But search in this thread somebody have done a rollback and have also checked two alternative firmware using the closed source driver.

So I think the original firmware is not affected by this very old bug.

Here some explaination for this bug

http://lists.infradead.org/pipermail/ath10k/2015-July/005648.html
https://www.gargoyle-router.com/phpbb/viewtopic.php?t=4667

And high-end router with the same problem:

Wrong driver,driver that is cause of issues is mt76.
That is open source driver for MT76xx family

Hmm thanks for answers Keiser1080 and Robimarko but if original xiaomi firmware dont have such problems and it is based on openwrt then where is problem to get it working without problems :slight_smile: ?

i think lede use an opensource firmware and xiaomi use the closed source firmware.
Can somebody confirm ?

here https://github.com/openwrt/mt76/issues/114 same issue using the same radio according wifi devi https://wikidevi.com/wiki/Xiaomi_MiWiFi_3G

if i understand the guy who have open the ticket.
The issue begin after a recovery.

In my case just after flashing i have done some mistake resulting with no access to the router.
To get access i restart the routeur in recovery mode then i have done the following command:
mount_root
umount /overlay && firstboot && reboot

Yes,original firmware uses Mediateks closed source driver while LEDE cant distribute that driver and uses open source mt76 driver

well, so what if we keep a copy of the closed source driver, then install lede, and overwrite the driver with the closed source one ?
will this work ?

i am looking to do the same,
but i think it's not possible unless you have the skill

so we are not alone having problem with this driver.
The guy on the post is trying to use the mediatek driver using the sdk from mediatiek,
but is not easy.

dd-wrt use the closed source driver.

Maby the good aproch if the xiaomi use the same kernel version is to copy the driver from xiaomi ?
i think it's the following file

root@LEDE:~# modinfo mac80211
module:		/lib/modules/4.9.52/mac80211.ko
license:	GPL
depends:	cfg80211,compat
root@LEDE:~# modinfo mt7603e
module:		/lib/modules/4.9.52/mt7603e.ko
license:	Dual BSD/GPL
depends:	mt76
root@LEDE:~# modinfo cfg80211
module:		/lib/modules/4.9.52/cfg80211.ko
alias:		net-pf-16-proto-16-family-nl80211
license:	GPL
depends:	compat