Converting GL.iNet MT3000 (Beryl AX) from CN to Global

i followed update the firmware using the uboot and followed every step.
it says update successful, and restarting.

but my GL-MT3000 stuck. it keeps rebooting and rebooting.

please help

@redangelz - are you using the official OpenWrt (downloaded from openwrt.org)?

I dont think i have. I tried update the firmware via uBoot (debrick) method. Using official firmware. But still no success.

Then i found this forum. When i browse here, the openwrt file is .bin

While the firmware usually .img

Hence i dont know where and how to upload the .bin file.

i'm stuck at this step. i can't even load the firmware to the router.

it says successful and restarting. but now it stuck on restart process (restart death loop)

I heard from my friend who bought the China version that flashing official OpenWrt on Beryl AX doesn't require any change to the uboot, so the uboot "CN" country setting only affects GL's firmware behavior, using official OpenWrt it will not have any issue (so now I am also waiting for my Beryl AX to come from China after Chinese New Year)

Ok never mind guys. i successfully restore it and it works flawlessly.
Thank youuuuuuuu so much

GL-MT3000

echo "US" |dd of=/dev/mtdblock3 bs=1 seek=136
sync
reboot

this works perfectly

echo "US" | dd of=/dev/mmcblk0p2 conv=notrunc bs=1 seek=136
sync
reboot

Wrote this script to simplify changes:

#!/bin/sh

# Step 1: Warning message
echo "WARNING: This script must run only on Gl.iNet devices. Running it on other devices may cause malfunction or even brick the device."

# Step 2: Confirm device type
read -p "Is this script running on a Gl.iNet device? (y/n): " confirm_device
if [ "$confirm_device"!= "${confirm_device#[Yy]}" ]; then
    echo "Proceeding..."
else
    echo "Aborting due to incorrect device."
    exit 1
fi

# Step 3: Double confirmation
read -p "Are you sure about proceeding? (y/n): " double_confirm
if [ "$double_confirm"!= "${double_confirm#[Yy]}" ]; then
    echo "Continuing..."
else
    echo "Operation cancelled."
    exit 1
fi

# Step 4: Choose method
read -p "Which method would you like to use? (1 (recommended), 2 (AX1800), 3 (GL-MT2500), 4 (GL-MT3000), 5 (DE, NOT RECOMMENDED), 6 (NOT RECOMMENDED)): " method_choice

case $method_choice in
    1)
        # Method 1 steps
        echo "US" > /tmp/country_code
        mount --bind /tmp/country_code /proc/gl-hw-info/country_code
        cat /proc/gl-hw-info/country_code
        
        echo "WARNING: You must now open the web interface and check if the country code has changed."
        read -p "Has the country code changed? (y/n): " country_changed
        if [ "$country_changed"!= "${country_changed#[Yy]}" ]; then
            echo "Continuing..."
        else
            echo "Please verify the country code change before proceeding."
            exit 1
        fi
        
        read -p "Are you sure the country code has changed? (y/n): " sure_country_changed
        if [ "$sure_country_changed"!= "${sure_country_changed#[Yy]}" ]; then
            sed -i '1iecho US > /tmp/country_code\nmount --bind /tmp/country_code /proc/gl-hw-info/country_code' /etc/rc.local
            cat /etc/rc.local
        else
            echo "Operation cancelled."
            exit 1
        fi
        ;;
    2)
        # Method 2 steps
        echo "WARNING: This method is not recommended unless specifically required for AX1800 models."
        read -p "Do you want to continue? (y/n): " continue_method_2
        if [ "$continue_method_2"!= "${continue_method_2#[Yy]}" ]; then
            echo "US" | dd of=/dev/mtdblock8 bs=1 seek=152
            sync
        else
            echo "Method 2 aborted."
            exit 1
        fi
        ;;
    3)
        # Method 3 steps
        echo "WARNING: This method is only for GL-MT2500 models."
        read -p "Do you want to continue? (y/n): " continue_method_3
        if [ "$continue_method_3"!= "${continue_method_3#[Yy]}" ]; then
            echo 0 > /sys/block/mmcblk0boot1/force_ro
            echo "US" | dd of=/dev/mmcblk0boot1 bs=1 seek=136
            sync
        else
            echo "Method 3 aborted."
            exit 1
        fi
        ;;
    4)
        # Method 4 steps
        echo "WARNING: This method is only for GL-MT3000 models."
        read -p "Do you want to continue? (y/n): " continue_method_4
        if [ "$continue_method_4"!= "${continue_method_4#[Yy]}" ]; then
            echo "US" | dd of=/dev/mtdblock3 bs=1 seek=136
            sync
        else
            echo "Method 4 aborted."
            exit 1
        fi
        ;;
    5)
        # Method 5 steps
        echo "WARNING: This method sets the DE country code and is NOT RECOMMENDED!"
        read -p "Do you want to continue? (y/n): " continue_method_5
        if [ "$continue_method_5"!= "${continue_method_5#[Yy]}" ]; then
            echo -n "DE" | dd of=/dev/mtdblock3 bs=1 seek=136
            sync
        else
            echo "Method 5 aborted."
            exit 1
        fi
        ;;
    6)
        # Method 6 steps
        echo "WARNING: This method is NOT RECOMMENDED."
        read -p "Do you want to continue? (y/n): " continue_method_6
        if [ "$continue_method_6"!= "${continue_method_6#[Yy]}" ]; then
            echo "US" | dd of=/dev/mmcblk0p2 conv=notrunc bs=1 seek=136
            sync
        else
            echo "Method 6 aborted."
            exit 1
        fi
        ;;
    *)
        echo "Invalid choice. Exiting."
        exit 1
        ;;
esac

echo "Script execution completed successfully."
echo "-/-/-/-"
echo "If any malfunctions occur, please refer to the following resources:"
echo "- Firmware downloads: https://dl.gl-inet.com/"
echo "- Model identification guide: https://docs.gl-inet.com/router/en/3/tutorials/how_to_find_model/"
echo "- Uboot debricking manual: https://docs.gl-inet.com/router/en/4/faq/debrick/"
echo "-/-/-/-"
echo "Don't forget to remove this script after operation to save space on router!"

GitHub page

1 Like

I'm going to order it from aliexpress. How to difference cn version from global version? Different label on package?

Every Beryl I have ordered from AliExpress I've been sent the EU version.

2 Likes

Those shipping internationally should be global version.
BTW, China or global version doesn't matter, you can still flash OpenWrt without issue (I have a CN version, just flash and then done, once in official OpenWrt it just works the same as others)

1 Like

I got the CN version from someone selling (without me knowing), unfortunately I had already opened and used it, etc. before I realized. I was able to convert it to the Global version by doing this (in order):

  1. SSH into the router and run the following:
echo "US" | dd of=/dev/mmcblk0p2 conv=notrunc bs=1 seek=136
sync
  1. Download the Common Upgrade (don't need UBOOT version) and drag and upgrade it within the admin console: https://dl.gl-inet.com/router/mt3000/

The above worked for me. I think setting the country to US first allows the firmware to be upgraded using the global version. In any case, if it's still showing CN (it didn't for me) after Step 2, simply run Step 1 again. A reboot may also help.

Anyone knows what code to run for GL-MT6000?
MT6000
This is the files I have.
Thank you.

If you are flashing official OpenWrt, you don't need to care about the CN or global thing, both can flash to official OpenWrt without doing anything, just the same as MT3000.

Yeah... I did flash the official openwrt... But Mullvad doesn't connect in the official openwrt firmware for some reason (I live in china so a lot of things don't make sense when it comes to vpn's). I also have a ax88u pro and mullvad never worked on it). In the CN firmware, I can install wireguard mullvad in the router through the phone app and it works... I just can't see the VPN tab when I login in the browser. I can see it in the phone app jast fine, but nothing on the browser. That's why I would like to change to global to see the VPN tab on the browser.

That means you just want to use the GL's CN firmware, which has nothing to do with official OpenWrt?

1 Like

I want to use the global GL's firmware, not the CN one. That's why I asked if someone knows the string to change the mt6000 region (such as this one: echo "US" | dd of=/dev/mmcblk0p2 conv=notrunc bs=1 seek=136
sync)

I would recommend opening a new topic, your post has nothing to do with the MT3000 or actual Openwrt.

Mullvad Wireguard works fine on actual Openwrt by the way.

Then this forum isn't really for your purpose since we are not discussing the same firmware.

1 Like

For GL-MT6000:
echo "US" |dd of=/dev/mmcblk0p2 bs=1 seek=136
sync
reboot

1 Like