GL.iNet GL-USB150 (aka Microuter)
Supported Versions
Hardware Highlights
Installation
Flash Layout
GL.iNet GL-USB150 Flash Layout | ||||||
---|---|---|---|---|---|---|
Layer0 | raw NOR flash memory chip (W25Q128JVSIQ SPI, SOIC-8 208-mil, top marking 25Q128JVSQ): 16384 KiB | |||||
Layer1 | mtd0 u-boot 256 KiB | mtd1 u-boot-env 64 KiB | mtd2 firmware 16000 KiB | mtd6 art 64 KiB | ||
Layer2 | mtd3 kernel 1536 KiB | mtd4 rootfs 14464 KiB | ||||
mountpoint | / | |||||
filesystem | OverlayFS | |||||
Layer3 | mtd5 rootfs_data 6464 KiB | |||||
Size in KiB | 256 KiB | 64 KiB | 1536 KiB | 8000 KiB | 6464 KiB | 64 KiB |
Name | u-boot | u-boot-env | kernel | rootfs_data | art | |
mountpoint | none | none | none | /rom | /overlay | none |
filesystem | none | none | SquashFS | JFFS2 | none |
Raw information
Output from dmesg
:
m25p80 spi0.0: found w25q128, expected m25p80 m25p80 spi0.0: w25q128 (16384 Kbytes) 4 cmdlinepart partitions found on MTD device spi0.0 Creating 4 MTD partitions on "spi0.0": 0x000000000000-0x000000040000 : "u-boot" 0x000000040000-0x000000050000 : "u-boot-env" 0x000000050000-0x000000ff0000 : "firmware" 2 uimage-fw partitions found on MTD device firmware 0x000000050000-0x0000001d0000 : "kernel" 0x0000001d0000-0x000000ff0000 : "rootfs" mtd: device 4 (rootfs) set to be root filesystem 1 squashfs-split partitions found on MTD device rootfs 0x0000009a0000-0x000000ff0000 : "rootfs_data" 0x000000ff0000-0x000001000000 : "art"
Output from cat /proc/mtd
:
dev: size erasesize name mtd0: 00040000 00010000 "u-boot" mtd1: 00010000 00010000 "u-boot-env" mtd2: 00fa0000 00010000 "firmware" mtd3: 00180000 00010000 "kernel" mtd4: 00e20000 00010000 "rootfs" mtd5: 00650000 00010000 "rootfs_data" mtd6: 00010000 00010000 "art"
OEM easy installation
The instructions below are for Broadcom devices and only serve as an example.
Remove / modify them if they do not apply to this particular device!
This section deals with
- How you install OpenWrt from a device freshly opened
- The steps required such as reset to factory defaults if the device has already been configured
Note: Reset router to factory defaults if it has been previously configured.
- Browse to
http://192.168.1.1/Upgrade.asp
- Upload .bin file to router
- Wait for it to reboot
- Telnet to 192.168.1.1 and set a root password, or browse to
http://192.168.1.1
if LuCI is installed.
OEM installation using the TFTP method
Specific values needed for tftp
Enter values for “FILL-IN” below
Bootloader tftp server IPv4 address | FILL-IN |
---|---|
Bootloader MAC address (special) | FILL-IN |
Firmware tftp image | Latest OpenWrt release (NOTE: Name must contain “tftp”) |
TFTP transfer window | FILL-IN |
TFTP window start | approximately FILL-IN seconds after power on |
TFTP client required IP address | FILL-IN |
Raw default values:
uboot> printenv bootargs=console=ttyATH0,115200 board=domino root=31:03 rootfstype=squashfs,jffs2 noinitrd mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,1280k(kernel),14656k(rootfs),64k(nvram),64k(art)ro,15936k@0x50000(firmware) bootcmd=bootm 0x9f050000 bootdelay=1 baudrate=115200 ipaddr=192.168.1.1 serverip=192.168.1.2 bootfile="firmware.bin" loadaddr=0x80800000 ncport=6666 uboot_addr=0x9F000000 uboot_name=uboot_for_gl-ar150.bin uboot_size=0x40000 lu=if ping $serverip; then tftp $loadaddr $uboot_name && if itest.l $filesize == $uboot_size; then erase $uboot_addr +$filesize && cp.b $loadaddr $uboot_addr $filesize && echo OK!; else echo ERROR! Wrong file size!; fi; else ERROR! Server not reachable!; fi firmware_addr=0x9F050000 firmware_name=openwrt-gl-ar150.bin lf=if ping $serverip; then tftp $loadaddr $firmware_name && erase $firmware_addr +$filesize && cp.b $loadaddr $firmware_addr $filesize && echo OK!; else ERROR! Server not reachable!; fi lc=tftp 0x81000000 config.bin &&cp.b 0x9fff1000 0x80060000 0xf000 && cp.b 0x81000000 0x80060002 0x06 &&erase 0x9fff0000 +0x10000 && cp.b 0x81000000 0x9fff0000 $filesize && cp.b 0x80060000 0x9fff1000 0xf000 stdin=serial stdout=serial stderr=serial ethact=eth0 Environment size: 1203/32764 bytes uboot> tftpboot Link down: eth1 Ethernet mode (duplex/speed): 1/100 Mbps TFTP from IP: 192.168.1.2 Our IP: 192.168.1.1 Filename: 'firmware.bin' Load address: 0x80800000 Using: eth0
Upgrading OpenWrt
These are generic instructions. Update with your router's specifics.
LuCI Web Upgrade Process
- Browse to
http://192.168.1.1/cgi-bin/luci/mini/system/upgrade/
LuCI Upgrade URL - Upload image file for sysupgrade to LuCI
- Wait for reboot
Terminal Upgrade Process
If you don't have a GUI (LuCI) available, you can alternatively upgrade via the command line. There are two command line methods for upgrading:
sysupgrade
mtd
Note: It is important that you put the firmware image into the ramdisk (/tmp) before you start flashing.
sysupgrade
- Login as root via SSH on 192.168.1.1, then enter the following commands:
cd /tmp wget http://downloads.openwrt.org/snapshots/trunk/XXX/xxx.abc sysupgrade /tmp/xxx.abc
mtd
If sysupgrade
does not support this router, use mtd
.
- Login as root via SSH on 192.168.1.1, then enter the following commands:
cd /tmp wget http://downloads.openwrt.org/snapshots/trunk/XXX/xxx.abc mtd write /tmp/xxx.abc linux && reboot
Debricking
Failsafe mode
Press the reset button for 10 seconds using a paperclip or pin (it is underneath the hole on the seam between the two halves of the case).
Basic configuration
→ Basic configuration After flashing, proceed with this.
Set up your Internet connection, configure wireless, configure USB port, etc.
Specific Configuration
Network interfaces
The default network configuration is:
Interface Name | Description | Default configuration |
---|---|---|
br-lan | LAN (eth0 ) & WiFi (wlan0 ) | 192.168.8.1/24 |
eth0 | Realtek RT8152B via USB | None |
wlan0 | WiFi | None |
Switch Ports (for VLANs)
Please fill in real values for this device, then remove the EXAMPLEs
Numbers 0-3 are Ports 1-4 as labeled on the unit, number 4 is the Internet (WAN) on the unit, 5 is the internal connection to the router itself. Don't be fooled: Port 1 on the unit is number 3 when configuring VLANs. vlan0 = eth0.0, vlan1 = eth0.1 and so on.
Port | Switch port |
---|---|
Internet (WAN) | EXAMPLE 4 |
LAN 1 | EXAMPLE 3 |
LAN 2 | EXAMPLE 2 |
LAN 3 | EXAMPLE 1 |
LAN 4 | EXAMPLE 0 |
Buttons
→ hardware.button on howto use and configure the hardware button(s). Here, we merely name the buttons, so we can use them in the above Howto.
The GL.iNet GL-USB150 has the following buttons:
BUTTON | Event |
---|---|
Reset | reset (3 s) or factory reset (10 s) |
Hardware
Info
Photos
Front:
Back:
The white (pixelized) sticker contains the MAC address (AA:BB:CC:DD:EE:FF
) in plain text form and as a bar code.
Opening the case
Note: This will void your warranty!
There's a small hole which allows to press the reset button. It can be reached with a paperclip or similar. Use that hole and wedge open the case. Be aware, though that it appears to be impossible to open the case without breaking a sort of (plastic) pin that seems to hold the two halves of the case together and at the same time hold the PCB in place.
Main PCB:
Serial
→ port.serial general information about the serial port, serial port cable, etc.
How to connect to the Serial Port of this specific device:
Three soldering pads/holes can be seen inside the red rectangle, marked TX, RX and GND.
Also:
- blue: the reset (and factory reset) button
- green: the two LEDs (LED2 and LED1, left to right)
- LED1 shows for active hotspot (in the OEM variant of OpenWrt)
- LED2 is the power LED
I tried connecting using a DSD TECH SH-U09C configured at 3,3 V and it worked like a charm. I did this after soldering three pins of a PCB pin strip (pin header) onto the PCB. It looks like this:
Serial connection parameters for GL.iNet GL-USB150 | 115200, 8N1 e.g. picocom -b 115200 /dev/ttyUSB0 |
---|
Bootloader mods
Hardware mods
None so far.
Bootlogs
OEM bootlog
********************************************* * U-Boot 1.1.4 (Jul 4 2017) * ********************************************* AP121 (AR9331) U-Boot for GL-AR150 DRAM: 64 MB DDR2 16-bit FLASH: Winbond W25Q128 (16 MB) CLOCKS: 400/400/200/33 MHz (CPU/RAM/AHB/SPI) ** Warning: bad env CRC, using default, use 'saveenv' to save it in FLASH LED on during eth initialization... Hit any key to stop autobooting: 1 0 Found ART, checking calibration status... Device calibrated. Checking MAC address... Found MAC. Starting firmware... Booting image at: 0x9F050000 Image name: MIPS OpenWrt Linux-4.9.120 Created: 2018-08-16 7:51:15 UTC Image type: MIPS Linux Kernel Image (lzma compressed) Data size: 1549730 Bytes = 1.5 MB Load address: 0x80060000 Entry point: 0x80060000 Uncompressing kernel image... OK! Starting kernel... [ 0.000000] Linux version 4.9.120 (lancer@gl-inet) (gcc version 7.3.0 (OpenWrt GCC 7.3.0 r7258-5eb055306f) ) #0 Thu Aug 16 07:51:15 2018 [ 0.000000] bootconsole [early0] enabled [ 0.000000] CPU0 revision is: 00019374 (MIPS 24Kc) [ 0.000000] SoC: Atheros AR9330 rev 1 [ 0.000000] Determined physical RAM map: [ 0.000000] memory: 04000000 @ 00000000 (usable) [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes. [ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x0000000000000000-0x0000000003ffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000000000000-0x0000000003ffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000003ffffff] [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 [ 0.000000] Kernel command line: board=GL-USB150 mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro console=ttyATH0,115200 rootfstype=squashfs noinitrd [ 0.000000] PID hash table entries: 256 (order: -2, 1024 bytes) [ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) [ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Writing ErrCtl register=00000000 [ 0.000000] Readback ErrCtl register=00000000 [ 0.000000] Memory: 59376K/65536K available (3533K kernel code, 182K rwdata, 884K rodata, 320K init, 220K bss, 6160K reserved, 0K cma-reserved) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] NR_IRQS:51 [ 0.000000] Clocks: CPU:400.000MHz, DDR:400.000MHz, AHB:200.000MHz, Ref:25.000MHz [ 0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 9556302233 ns [ 0.000013] sched_clock: 32 bits at 200MHz, resolution 5ns, wraps every 10737418237ns [ 0.007589] Calibrating delay loop... 265.42 BogoMIPS (lpj=1327104) [ 0.088757] pid_max: default: 32768 minimum: 301 [ 0.093350] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.099515] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.110423] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.118465] futex hash table entries: 256 (order: -1, 3072 bytes) [ 0.126202] NET: Registered protocol family 16 [ 0.131269] MIPS: machine is GL.iNet GL-USB150 [ 0.411943] usbcore: registered new interface driver usbfs [ 0.416019] usbcore: registered new interface driver hub [ 0.420987] usbcore: registered new device driver usb [ 0.431110] clocksource: Switched to clocksource MIPS [ 0.436186] NET: Registered protocol family 2 [ 0.440324] TCP established hash table entries: 1024 (order: 0, 4096 bytes) [ 0.445702] TCP bind hash table entries: 1024 (order: 0, 4096 bytes) [ 0.451760] TCP: Hash tables configured (established 1024 bind 1024) [ 0.457940] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 0.463424] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 0.469686] NET: Registered protocol family 1 [ 0.477703] Crashlog allocated RAM at address 0x3f00000 [ 0.482983] workingset: timestamp_bits=30 max_order=14 bucket_order=0 [ 0.498660] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.502912] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 0.526008] io scheduler noop registered [ 0.528378] io scheduler deadline registered (default) [ 0.533973] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled [ 0.543288] ar933x-uart: ttyATH0 at MMIO 0x18020000 (irq = 11, base_baud = 1562500) is a AR933X UART [ 0.551070] console [ttyATH0] enabled [ 0.551070] console [ttyATH0] enabled [ 0.557977] bootconsole [early0] disabled [ 0.557977] bootconsole [early0] disabled [ 0.574289] m25p80 spi0.0: found w25q128, expected m25p80 [ 0.588018] m25p80 spi0.0: w25q128 (16384 Kbytes) [ 0.591337] 4 cmdlinepart partitions found on MTD device spi0.0 [ 0.597173] Creating 4 MTD partitions on "spi0.0": [ 0.601990] 0x000000000000-0x000000040000 : "u-boot" [ 0.609721] 0x000000040000-0x000000050000 : "u-boot-env" [ 0.616624] 0x000000050000-0x000000ff0000 : "firmware" [ 0.638578] 2 uimage-fw partitions found on MTD device firmware [ 0.643126] 0x000000050000-0x0000001d0000 : "kernel" [ 0.650112] 0x0000001d0000-0x000000ff0000 : "rootfs" [ 0.656154] mtd: device 4 (rootfs) set to be root filesystem [ 0.660408] 1 squashfs-split partitions found on MTD device rootfs [ 0.666634] 0x0000009a0000-0x000000ff0000 : "rootfs_data" [ 0.675066] 0x000000ff0000-0x000001000000 : "art" [ 0.682857] libphy: Fixed MDIO Bus: probed [ 0.705948] libphy: ag71xx_mdio: probed [ 1.332826] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.1:04 [uid=004dd041, driver=Generic PHY] [ 1.341597] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode:MII [ 1.346775] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.352994] ehci-pci: EHCI PCI platform driver [ 1.357617] usbcore: registered new interface driver usbtest [ 1.363140] usbcore: registered new interface driver usb_ehset_test [ 1.369328] usbcore: registered new interface driver lvs [ 1.376712] NET: Registered protocol family 10 [ 1.385855] NET: Registered protocol family 17 [ 1.388921] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this. [ 1.402009] 8021q: 802.1Q VLAN Support v1.8 [ 1.408607] hctosys: unable to open rtc device (rtc0) [ 1.418780] VFS: Mounted root (squashfs filesystem) readonly on device 31:4. [ 1.426941] Freeing unused kernel memory: 320K [ 1.429926] This architecture does not have kernel memory protection. [ 2.378998] init: Console is alive [ 2.381372] init: - watchdog - [ 2.541128] random: fast init done [ 4.129348] kmodloader: loading kernel modules from /etc/modules-boot.d/* [ 4.234617] kmodloader: done loading kernel modules from /etc/modules-boot.d/* [ 4.246641] init: - preinit - [ 5.778484] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready Press the [f] key and hit [enter] to enter failsafe mode Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level [ 7.852597] eth0: link up (100Mbps/Full duplex) [ 7.855720] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 9.237697] jffs2: notice: (404) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found. [ 9.253735] mount_root: switching to jffs2 overlay [ 9.344129] urandom-seed: Seeding with /etc/urandom.seed [ 9.604894] eth0: link down [ 9.623600] procd: - early - [ 9.625169] procd: - watchdog - [ 10.407471] procd: - watchdog - [ 10.409542] procd: - ubus - [ 10.599227] random: ubusd: uninitialized urandom read (4 bytes read) [ 10.758373] random: ubusd: uninitialized urandom read (4 bytes read) [ 10.920224] random: ubusd: uninitialized urandom read (4 bytes read) [ 10.933074] procd: - init - Please press Enter to activate this console. [ 13.191632] kmodloader: loading kernel modules from /etc/modules.d/* [ 13.218912] tun: Universal TUN/TAP device driver, 1.6 [ 13.222620] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> [ 13.271617] ip6_tables: (C) 2000-2006 Netfilter Core Team [ 13.313583] Netfilter messages via NETLINK v0.30. [ 13.320810] ip_set: protocol 6 [ 13.473014] u32 classifier [ 13.474272] input device check on [ 13.477915] Actions configured [ 13.494751] Mirror/redirect action on [ 13.514249] nf_conntrack version 0.5.0 (1024 buckets, 4096 max) [ 13.630392] Loading modules backported from Linux version wt-2017-11-01-0-gfe248fc2c180 [ 13.637031] Backport generated by backports.git v4.14-rc2-1-31-g86cf0e5d [ 13.665195] ip_tables: (C) 2000-2006 Netfilter Core Team [ 13.877660] ctnetlink v0.93: registering with nfnetlink. [ 14.174755] wireguard: WireGuard 0.0.20181119 loaded. See www.wireguard.com for information. [ 14.181829] wireguard: Copyright (C) 2015-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. [ 14.355193] xt_time: kernel timezone is -0000 [ 14.599384] PPP generic driver version 2.4.2 [ 14.617487] NET: Registered protocol family 24 [ 14.778415] ieee80211 phy0: Atheros AR9330 Rev:1 mem=0xb8100000, irq=2 [ 14.825736] kmodloader: done loading kernel modules from /etc/modules.d/* [ 17.177512] urandom_read: 6 callbacks suppressed [ 17.177524] random: jshn: uninitialized urandom read (4 bytes read) [ 41.923150] br-lan: port 1(eth0) entered blocking state [ 41.926934] br-lan: port 1(eth0) entered disabled state [ 41.932806] device eth0 entered promiscuous mode [ 42.011451] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready [ 44.012653] eth0: link up (100Mbps/Full duplex) [ 44.015798] br-lan: port 1(eth0) entered blocking state [ 44.020952] br-lan: port 1(eth0) entered forwarding state [ 44.081223] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready [ 48.224996] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready [ 48.366983] br-lan: port 2(wlan0) entered blocking state [ 48.370848] br-lan: port 2(wlan0) entered disabled state [ 48.376830] device wlan0 entered promiscuous mode [ 59.399770] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready [ 59.405037] br-lan: port 2(wlan0) entered blocking state [ 59.409983] br-lan: port 2(wlan0) entered forwarding state
OpenWrt bootlog
OpenWrt (18.06.1, r7258-5eb055306f) came preinstalled on the device.
BusyBox v1.28.3 () built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt 18.06.1, r7258-5eb055306f ----------------------------------------------------- root@GL-USB150:~#
Notes
- Reports in Windows 10 as
Realtek USB FE Family Controller
Details about the OEM-provided and "unmodified" (clean) OpenWrt
This information was retrieved with binwalk
(private information stripped).
Target File: GL.iNet_USB150/gl-usb150-3.0-1011_clean.bin MD5 Checksum: b754fc3b47078023ea64b2a51e777548 Signatures: 344 DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 uImage header, header size: 64 bytes, header CRC: 0x9F6B5467, created: 2018-08-16 07:51:15, image size: 1475711 bytes, Data Address: 0x80060000, Entry Point: 0x80060000, data CRC: 0x6CD303CF, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "MIPS OpenWrt Linux-4.9.120" 64 0x40 LZMA compressed data, properties: 0x6D, dictionary size: 8388608 bytes, uncompressed size: 4774812 bytes 1507328 0x170000 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 2315746 bytes, 1150 inodes, blocksize: 262144 bytes, created: 2018-10-11 02:08:08 Target File: GL.iNet_USB150/openwrt-usb150-clean-2.264-1.bin MD5 Checksum: 6ef95e89733145e05125bb9fbce3506f Signatures: 344 DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 uImage header, header size: 64 bytes, header CRC: 0x5CBD94E6, created: 2017-11-16 08:44:23, image size: 1270480 bytes, Data Address: 0x80060000, Entry Point: 0x80060000, data CRC: 0x37FE6815, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "MIPS OpenWrt Linux-3.18.27" 64 0x40 LZMA compressed data, properties: 0x6D, dictionary size: 8388608 bytes, uncompressed size: 3837484 bytes 1310720 0x140000 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 2311114 bytes, 1140 inodes, blocksize: 262144 bytes, created: 2017-11-20 04:19:02