Installing OpenWrt on Kingston MLWG2
Introduction
This blog post explains how to install OpenWrt on the Kingston Mobilelite Wireless MLWG2.
Download OpenWrt image for MLWG2
Download Chaos Chalmer 15.05 for mlwg2 from https://downloads.openwrt.org/chaos_calmer/15.05/ramips/mt7620/
gmacario@ITM-GMACARIO-W7 ~/Downloads
$ ls -la openwrt-15.05-ramips-mt7620-mlwg2-squashfs-sysupgrade.bin
-rwxrwx---+ 1 Administrators Domain Users 3407876 Nov 29 08:38 openwrt-15.05-ramips-mt7620-mlwg2-squashfs-sysupgrade.bin
gmacario@ITM-GMACARIO-W7 ~/Downloads
$ md5sum openwrt-15.05-ramips-mt7620-mlwg2-squashfs-sysupgrade.bin
6948bca859a59797fc5f5978f004e11a *openwrt-15.05-ramips-mt7620-mlwg2-squashfs-sysupgrade.bin
gmacario@ITM-GMACARIO-W7 ~/Downloads
$
Prepare the install media
Plug a FAT32-formatted USB pendrive on the host and put the following files:
$ cd /media/xxx/
$ touch 'mlwG2_v;telnetd; .x.x.bin'
$ cp ~/Downloads/openwrt-15.05-ramips-mt7620-mlwg2-squashfs-sysupgrade.bin .
$ ls -la
$ cd
$ umount /media/xxx
(Optional, recommended) Connect a USB-to-serial-TTL dongle to the serial console
MLWG2 pad | Signal | Notes | Connect to |
---|---|---|---|
1 | +3.3Vdc | Marked with a white dot | DO NOT CONNECT |
2 | TX | Close to R139 | USB-to-TTL dongle pin "R" |
3 | RX | Close to R54 | USB-to-TTL dongle pin "T" |
4 | GND | - | USB-to-TTL dongle pin "G" |
Launch a terminal emulator (COMx:57600,8,n,1)
Plug the USB Pendrive into the USB connector of the MLWG2.
Connect to Wi-Fi network "MLWG2-xxxx" (replace xxxx with the last two bytes of the MAC address)
Then telnet to 192.168.201.254 (username:admin; password:none)
C:\Users\gmacario>telnet 192.168.201.254
(none) login: admin
BusyBox v1.12.1 (2014-09-18 09:46:08 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
#
Logged as admin@mlwg2
# mtd_write write /media/USB1/openwrt-ramips-mt7620n-mlwg2-squashfs-sysupgrade.bin KernelA
# mtd_write -r write /media/USB1/openwrt-ramips-mt7620n-mlwg2-squashfs-sysupgrade.bin KernelB
The MLWG2 will reboot after the second command is complete.
Result:
# ls -la /media
drwxrwxrwx 2 0 0 4096 USB1
drwxr-xr-x 18 0 0 0 ..
drwxr-xr-x 3 0 0 0 .
# ls -la /media/USB1
-rwxrwxrwx 1 0 0 3407876 openwrt-15.05-ramips-mt7620-mlwg2-squ
ashfs-sysupgrade.bin
-rwxrwxrwx 1 0 0 0 mlwG2_v;telnetd; .x.x.bin
drwxr-xr-x 3 0 0 0 ..
drwxrwxrwx 2 0 0 4096 .
# mtd_write write /media/USB1/openwrt-15.05-ramips-mt7620-mlwg2-squashfs-sysupgr
ade.bin KernelA
Unlocking KernelA ...
Writing from /media/USB1/openwrt-15.05-ramips-mt7620-mlwg2-squashfs-sysupgrade.b
in to KernelA ... [w]
# mtd_write -r write /media/USB1/openwrt-15.05-ramips-mt7620-mlwg2-squashfs-sysu
pgrade.bin KernelB
Unlocking KernelB ...
Writing from /media/USB1/openwrt-15.05-ramips-mt7620-mlwg2-squashfs-sysupgrade.b
in to KernelB ... [e]
Connection to host lost.
C:\Users\gmacario>
Result on the serial console:
BusyBox v1.23.2 (2015-07-25 03:03:02 CEST) built-in shell (ash)
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
CHAOS CALMER (15.05, r46767)
-----------------------------------------------------
* 1 1/2 oz Gin Shake with a glassful
* 1/4 oz Triple Sec of broken ice and pour
* 3/4 oz Lime Juice unstrained into a goblet.
* 1 1/2 oz Orange Juice
* 1 tsp. Grenadine Syrup
-----------------------------------------------------
root@OpenWrt:/# [ 76.140000] random: nonblocking pool is initialized
root@OpenWrt:/#
Inspect OpenWrt configured interfaces
root@OpenWrt:/# ifconfig -a
br-lan Link encap:Ethernet HWaddr 00:26:B7:08:E0:A2
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fda0:2235:dc76::1/60 Scope:Global
inet6 addr: fe80::226:b7ff:fe08:e0a2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:333 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:31038 (30.3 KiB)
eth0 Link encap:Ethernet HWaddr 00:26:B7:08:E0:A2
inet6 addr: fe80::226:b7ff:fe08:e0a2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:138 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:14401 (14.0 KiB)
Interrupt:5
eth0.1 Link encap:Ethernet HWaddr 00:26:B7:08:E0:A2
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:130 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:11500 (11.2 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:9168 errors:0 dropped:0 overruns:0 frame:0
TX packets:9168 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:623424 (608.8 KiB) TX bytes:623424 (608.8 KiB)
wlan0 Link encap:Ethernet HWaddr 00:26:B7:08:E0:A2
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@OpenWrt:/#
OpenWrt - First Login
See https://wiki.openwrt.org/doc/howto/firstlogin
Configure your host to connect to 192.168.1.1 using the local network
TODO
Reconfigure networking
From the serial console use the uci command to take a static IP address in your local network and use Google DNS (replace x and y appropriately)
# uci set network.lan.netmask=255.255.255.0
# uci set network.lan.ipaddr=192.168.x.y
# uci set network.lan.gateway=192.168.x.z
# uci set network.lan.broadcast=192.168.x.255
# uci set network.lan.dns="8.8.4.4 8.8.8.8"
# uci commit network
As an alternative, directly edit file /etc/config/network
# vi /etc/config/network
Then restart networking
# /etc/init.d/network restart
Verify that the network configuration has changed accordingly (in this example we had network.lan.ipaddr=192.168.64.65)
root@OpenWrt:/etc/config# ifconfig
br-lan Link encap:Ethernet HWaddr 00:26:B7:08:E0:A2
inet addr:192.168.64.65 Bcast:192.168.64.255 Mask:255.255.255.0
inet6 addr: fda0:2235:dc76::1/60 Scope:Global
inet6 addr: fe80::226:b7ff:fe08:e0a2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:37 errors:0 dropped:0 overruns:0 frame:0
TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2615 (2.5 KiB) TX bytes:2655 (2.5 KiB)
eth0 Link encap:Ethernet HWaddr 00:26:B7:08:E0:A2
inet6 addr: fe80::226:b7ff:fe08:e0a2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1958 errors:0 dropped:0 overruns:0 frame:0
TX packets:200 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:310839 (303.5 KiB) TX bytes:21653 (21.1 KiB)
Interrupt:5
eth0.1 Link encap:Ethernet HWaddr 00:26:B7:08:E0:A2
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:69 errors:0 dropped:0 overruns:0 frame:0
TX packets:35 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4919 (4.8 KiB) TX bytes:3389 (3.3 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:2064 errors:0 dropped:0 overruns:0 frame:0
TX packets:2064 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:140352 (137.0 KiB) TX bytes:140352 (137.0 KiB)
root@OpenWrt:/etc/config#
Perform some tests:
From the MLWG2, try pinging another host in the same subnet - for instance, the default gateway
# ping <default_gateway_ip>
Now try pinging a well known server - for instance, Google DNS
# ping 8.8.8.8
From a Linux machine on the same subnet do a port scan of the MLWG2
$ sudo nmap <device_ip>
Stay tuned for future posts on some interesting uses of OpenWrt on my MLWG2!