From: John Crispin Date: Thu, 11 Dec 2014 18:28:44 +0000 (+0000) Subject: au1000: distinguish different models and set correct MAC-address X-Git-Tag: reboot~5011 X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=ed61e202a1d7185374a33ebe86a3d8c1640e47b3;p=openwrt%2Fstaging%2Fjogo.git au1000: distinguish different models and set correct MAC-address The target au1000 has at least 2 different models, the 'InternetBox' and the 'MeshCube' which look very similar from the kernel point of view but are totally different devices which base on the same design. Populating /tmp/sysinfo now. The 1st one has an issue which leads to a random mac-address after each boot which is corrected now via reading the bootloader-env. The real fix would be converting to DTS, this is only a workaround now. Signed-off-by: Bastian Bittorf SVN-Revision: 43626 --- diff --git a/target/linux/au1000/base-files/etc/uci-defaults/02_network b/target/linux/au1000/base-files/etc/uci-defaults/02_network new file mode 100755 index 0000000000..80bfb732d2 --- /dev/null +++ b/target/linux/au1000/base-files/etc/uci-defaults/02_network @@ -0,0 +1,17 @@ +#!/bin/sh + +. /lib/au1000.sh +. /lib/functions/system.sh +. /lib/functions/uci-defaults.sh +MAC= + +case "$(au1000_board_name)" in + 'internetbox') + MAC="$( au1000_yamonenv_getvar 'ethaddr' )" + MAC="$( macaddr_canonicalize "$MAC" )" + + [ -n "$MAC ] && ucidef_set_interface_macaddr lan "$MAC" + ;; +esac + +[ -z "$MAC" ] || uci commit network diff --git a/target/linux/au1000/base-files/lib/au1000.sh b/target/linux/au1000/base-files/lib/au1000.sh new file mode 100644 index 0000000000..556598dbc1 --- /dev/null +++ b/target/linux/au1000/base-files/lib/au1000.sh @@ -0,0 +1,59 @@ +#!/bin/sh + +au1000_yamonenv_getvar() +{ + local varname="$1" + local partition + + . /lib/functions.sh + + partition="$( find_mtd_part 'yamon env' )" + YAMONENVFILE="$partition" yamonenv "$varname" +} + +au1000_detect() +{ + local line board_name model + + while read line; do + case "$line" in + 'system type'*) + break + ;; + esac + done <'/proc/cpuinfo' + + case "$line" in + *' MTX-1') + # both models appear nearly similar: the 'InternetBox' has + # the same design but shrinked to 1 PCB and only 1 x miniPCI + # for WiFi/ath5k and 1 x miniPCI for CardBus/UMTS, they differ + # in BogoMIPS but there are old MeshCubes with 330 Mhz instead + # of 400 MHz and no Cube has 'imei' (for UMTS) set in bootloader-env + + if [ -n "$( au1000_yamonenv_getvar 'imei' )" ]; then + board_name='internetbox' + model='T-Mobile InternetBox TMD SB1-S' + else + board_name='meshcube' + model='4G Systems AccessCube/MeshCube' + fi + ;; + *) + board_name='unknown' + model='unknown' + ;; + esac + + mkdir -p '/tmp/sysinfo' + echo "$board_name" >'/tmp/sysinfo/board_name' + echo "$model" >'/tmp/sysinfo/model' +} + +au1000_board_name() +{ + local file='/tmp/sysinfo/board_name' + + [ -e "$file" ] || au1000_detect + cat "$file" +}