Przygotowanie i instalacja OpenWrt na routerze jjPlus JWAP003
Ostatnia zmiana: 2013-11-26 18:43
Krótka specyfikacja
- architektura: Atheros ar71xx
- bootloader: Redboot
- procesor Atheros AR7130 rev 2 300MHz
- Flash: 8 MiB
- RAM: 32MiB
- WLAN: brak (1x złącze miniPCI)
- chipset Ethernet: 10/100 Mbps, 1xwan, 1xlan
- 2x USB 2.0 (wyprowadzone piny, niezbędna dodatkowa płytka ze złączami)
- 1x rs232c (wyprowadzone piny, niezbędna dodatkowa płytka ze złączami)
- przycisk reset
- gpio, serial, dodatkowe wyjścia LED, czujnik temperatury LM75
Stan projektu
Ruter obecnie nie jest obsługiwany przez OpenWrt. Stworzona została przeze mnie odpowiednia łatka na wersję rozwojową (trunk) która zawiera wsparcie dla tej platformy (
https://dev.openwrt.org/ticket/7471).
Port szeregowy
Dostępny jest na płytce. Niezależnie od tego dostępne jest normalne złącze RS232C dzięki zewnętrznej płytce developerskiej.
1 3.3V 2 3.3V
3 GPIO7 4 UART_RX
5 GPIO8 6 UART_TX
7 NC 8 GND
9 GND 10 GND
Kompilacja
Należy użyć i skompilować aktualną wersję OpenWrt trunk pobraną z svn. Jako platformę należy wybrać
Atheros AR71xx/AT7240/AR913x, target profile -
jjPlus JWAP003, target image -
squashfs. Z kolei w
Kernel modules -> USB Support należy zaznaczyć
kmod-usb-core oraz
kmod-usb2 i kmod-ohci. Inne pakiety można zaznaczyć wg potrzeb, w szczególności jeżeli posiadamy kartę wlan należy pamiętać o pakietach
wpad-mini, iw, crda oraz odpowiednich sterownikach do tej karty.
Firmware należy skompilować w standardowy sposób (make). Plik wynikowy dla tego routera to:
- openwrt-ar71xx-generic-jwap003-kernel.bin - kernel
- openwrt-ar71xx-generic-jwap003-rootfs-squashfs.bin - system plików
Instalacja przez bootloader
Po kolei należy:
- wyłączyć zasilanie płytki
- podłączyć kabel ethernet do rutera (do portu wan) i komputera
- ustawić adres karty sieciowej w komputerze na stałe na 192.168.1.3
- w katalogu głównym serwera TFTPD umieścić pliki openwrt-ar71xx-generic-jwap003-kernel.bin oraz openwrt-ar71xx-generic-jwap003-rootfs-squashfs.bin
- podłączyć kabel szeregowy do płytki
- uruchomić terminal z parametrami 115200 8n1
- włączyć zasilanie
- przez Ctrl-C przerwać ładowanie bootloadera.
Następnie wystarczy wydać polecenia:
fis init
load -r -b 0x80060000 openwrt-ar71xx-generic-jwap003-kernel.bin
fis create linux.bin
load -r -b %{FREEMEMLO} openwrt-ar71xx-generic-jwap003-rootfs-squashfs.bin
fis create rootfs
Należy pamiętać także o zmianie skryptu startowego (polecenie
fconfig bootloadera) na następujący:
fis load -l linux.bin
exec
Czujnik temperatury
Należy zainstalować pakiety
i2c-tools, kmod-hwmon-lm75, kmod-i2c-core wraz z zależnościami zależności. Następnie odczytać temperatury:
root@OpenWrt:/# i2cdetect -l
i2c-0 i2c i2c-gpio0 I2C adapter
root@OpenWrt:/# i2cdetect i2c-gpio0
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-0.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@OpenWrt:/# i2cget i2c-gpio0 0x48 0xaa w
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will read from device file /dev/i2c-0, chip address 0x48, data address
0xaa, using read word data.
Continue? [Y/n]
0x0133
root@OpenWrt:/#
i zdekodować otrzymaną wartość np. takim skryptem (znalezione w sieci):
#!/bin/sh
RAWTEMP=$(i2cget -y 0 0x48 0xaa w)
if (echo "$RAWTEMP"| grep -Eq '0x[0-9a-f]{4}'); then
HEXORDERED=$(echo "$RAWTEMP"|sed -r 's/0x([0-9a-f]{2})([0-9a-f]{2})/0x\2\1/')
if [ $(($HEXORDERED)) -ge 32768 ]; then
DECRAW=$(( -65536+$HEXORDERED ))
else
DECRAW=$(($HEXORDERED))
fi
TEMPNODOT=$(( ($DECRAW/16)*625 ))
TEMPDOT=$(echo "$TEMPNODOT" | sed -r 's/([0-9]{4})$/.\1/')
echo "Temperatura: $TEMPDOT stC"
fi