B1300 Unable to Update to LEDE

I recently purchased the B1300 with the expectation of upgrading it to the latest vanilla snapshot version of LEDE. Unfortunately I’m having some trouble upgrading the B1300 because it is running a much older OpenWRT build (Chaos Calmer QSDK).

I compiled my own image from the LEDE/OpenWRT source code, but when I try to flash it via the LuCl interface I get an error:

“The uploaded image file does not contain a supported format. Make sure that you choose the generic image format for your platform.”

I then tried forcing an update via the sysupgrade function using the buildbot image located here.

sysupgrade -v -F -n openwrt-ipq806x-glinet_gl-b1300-squashfs-sysupgrade.bin

^This command entered via SSH allows me to bypass the image check, but the upgrade still fails with the following messages:

Switching to ramdisk…
Performing system upgrade…
Error: Cant’ find kernel@1 after switching to ramfs, aborting upgrade!
Error: Can’t find fdt@1 after switching to ramfs, aborting upgrade!

The terminal then closes the SSH session and the router reboots without any changes made. Is there something else I can try?

EDIT:
Just read the git commit that added support for the B1300 and followed the instructions, but Uboot web is also not working. Successfully booted into the Uboot mode and loaded the web UI, but every time I click the upload button my browser immediately gives me a “Connection Reset” error (network diagnostics show that the file is never uploaded) and the Mesh LED on the B1300 shuts off. Tried in multiple browsers and operating systems. Reloading the web page just brings me back to the uboot screen. Rebooting the router boots me back into the old firmware.

1 Like

Serial Console would be your friend here. I don’t have a B1300 yet, but the pins are present and documented on all of the GL-Inet stuff I’ve ever used so B1300 will probably be the same.

U-Boot console can be a dangerous place if you’re not careful, so don’t try running any commands there unless you are certain; I would suggest simply connecting the console, put the device into the UBoot WebUI mode, and trying to do your upload. The console will show you UBoot’s output and why it is not accepting the file/etc. You can then troubleshoot from there.

Thanks for the reply! I am aware of the dangers of working with bootloaders and custom firmware. I’ve successfully compiled and flashed my own firmware on the AR750 which was a huge factor in my decision to purchase the B1300 to replace my home router (though it was helpful that the AR750 was already running a relatively recent version of LEDE).

I don’t own a UART serial connector, but I don’t mind getting one as I’m sure it will be helpful in the future. Does anyone have a link to the documentation where I can find the pin layouts for GL-Inet routers (specifically for the B1300)?

I’d still love a response from one of the GL-Inet devs. I’m a little bit worried about flashing anything on this router without a working recovery. I recently tried flashing the stock firmware from GL-Inet (over itself since the router still boots the stock firmware and factory resets normally) via Uboot WebUI, but have the same error. For some reason Uboot WebUI resets the connection before I can upload any file. I’ve tried with 2 separate computers (a laptop and desktop) and 4 different operating systems (Mac OS Sierra, Mac OS Snow Leopard, Ubuntu Linux, and Windows 10) all with their firewalls disabled, Firefox and Chrome (fresh profiles no extensions enabled), but still the same error.

Is it possible my router shipped with a corrupted Uboot? Purchased it from Amazon and still within the 30 day return period. Wondering if it would be better to try a fresh unit.

Interesting, I’m having the same issue with the U-Boot web UI on the B1300.

After pressing the upload button on the U-Boot web UI I get a connection reset error.

Is this a bug on the B1300’s UBoot?

Hi jp2012 & justin. Sorry for the inconvenience.
HI jolouis, thanks for your reply.

The current U-Boot web is indeed buggy. We’ll fix it asap.

But the is a way to flash firmware without serial port. You need to start a tftpd server with ip address 192.168.1.2, rename the firmware name to lede-gl-b1300.bin if you flash the openwrt snapshot version. If you’d like to go back to factory firmware, you need to rename file name to qsdk-gl-b1300.bin. Connect the device with ethernet to tftpd server, power on the device, the flashing process will automatically go on till the wifi led stop blinking. You can also check that the firmware file is downloaded to the device by tftpd log.

1 Like

hansome - Thank you very much for these instructions.

This worked of me on Ubuntu 16.04, quick instructions for anyone wanting to do a TFTP flash from Ubuntu:

  • Install the tftp server. Run sudo apt-get install tftpd-hpa
  • Download the firmware, rename it to qsdk-gl-b1300.bin
  • Move the .bin file to /var/lib/tftpboot (You’ll need sudo or directory read/write permission for your user)
  • Set a static IP to 192.168.1.2, connect an Ethernet from the router’s LAN to your computer, and boot it.

Thanks again to hansome and the whole GL-Inet team!

1 Like

Hello Justin, I’m trying to do the TFTP flash, with no success.

Edit:
After experimenting with 2 PC’s I’ve arrived to the conclusion that the TFTP server in the router is never on, that’s why I never got any responses or error messages. Now I have 2 GL-iNet-B1300 routers that when turning on, enter in a loop in which they end up reseting themselves every 30secs. During this time, I can ping 192.168.1.1 but never send the binary file trough ftpt. Also I can’t do the factory reset to come back to the original firmware!

Edit 2:
Finally I could upload the new firmware. The “problem” was that there’s no acknowledge from the router server that the file is being sent. The TFTP client keeps trying to send it until it fails for timeout, but actually the file IS being sent as soon as the router is powered. It’s a good idea to stop the network manager before initializing the TFTP.
Sorry for all the edits.

Hi, just wanted to share some new things I discovered about how to flashing firmware though an HTTP server, since I started to use a serial-USB converter:
serial-port GL-iNet --> USB to my PC. (it’s not necessary to have the serial converter, it just helped me to understand/debug what was happening), so if you don’t have one just go to the step number 5.

  1. Open the cover of the router
  2. Connect serial port to the USB using a serial-usb converter
  3. In terminal, type dmesg to find where is the serial-USB attached:
    $ dmesg
    The ouput should contain something like:
    [784212.385191] usb 2-2: cp210x converter now attached to ttyUSB0
  4. Open picocom to read serial data from the router
    $ picocom -b 115200 /dev/ttyUSB0 #use the USB number listed by dmesg ouput, in my case ttyUSB0
  5. Power on the router pressing the reset button for more than 10 seconds, then you can see in picocom that an HTTP server is opened at 192.168.1.1
  6. Go to your browser and type the 192.168.1.1 IP address. Now there should be an option to chose and upload your file (I’ve used the sysupgrade.bin file I compiled in openwrt, but renamed as lede-gl-b1300.bin). Wait some time and the sysupgrade is made, way easier than using the TFTP server!
1 Like

Thanks for the sharing.

The current U-Boot web is indeed buggy. We’ll fix it asap.

Hi, I just wanted to check the status of this bug, I’m facing exactly the same issue.
The bug is important, it makes any router recovery using the recovery boot impossible.

I think this has been fixed. @hansome should have the uboot.

@mauropasse Hi Mauro, I upload the fixed uboot binary at https://github.com/gl-inet/uboot-ipq40xx/blob/master/uboot-gl-b1300-20180413-md5-464641c1448b8fca42a3ed8f1295b0ad.bin
You can use uboot comand:
run lu
to flash uboot.

1 Like

Thanks @hansome. Should I rename the file with a particular new name as uboot-gl-b1300.bin and place it in /tpftboot/ before using the run lu command?

1 Like

Yes, you’re correct. The uboot command will also give a prompt for the file name.

u-boot has most definitely not been fixed. I have flashed the provided uboot, and am trying to flash openwrt .bin file. On previous device it took me 76 (correct, seventy six) times to finally get the .bin flashed. On the one I am trying right now - i am on number 79 and still no luck :slight_smile:

So timeout has not been fixed on uboot-gl-b1300-20180413-md5-464641c1448b8fca42a3ed8f1295b0ad.bin

@hansome – can you please clarify which file should be flashed from http://192.168.1.1/uboot.html ?

The bin file posted on github is different from the openwrt-ipq40xx-u-boot-stripped.elf I get when I make an uboot following directions posted here.

But when I try to flash either file via http://192.168.1.1/uboot.html I pick the file, click the “Update U-boot” button and then the browser immediately says “Site cannot be reached” and the B1300 does NOT update uboot.

Can I still update the uboot from uboot WebUI?

Both uboot-gl-b1300-20180413-md5-464641c1448b8fca42a3ed8f1295b0ad.bin file or you compile is ok. The uboot bin file is a little oldder than source code compiled one which had some code optimization, eg, put firmware name to update in uboot env.

You can update uboot from uboot WebUI.

You can tell the uboot is updated by uboot command line compiled timestamp.

If you uboot is older than 20180413, it has problem of update failure. That case please use uboot command line to update uboot first.

I test the uboot a lot times with Fast ethernet and Giga ethernet, or chrome and firefox, it’s ok to update. Have you firstly flash uboot of uboot-gl-b1300-20180413-md5-464641c1448b8fca42a3ed8f1295b0ad.bin successfully.

You mean by opening the case and connecting to the serial headers?

Yes, the board shipped with old uboot is very old. But you can update firmware with tftpd, no needing to open the case. please check here: