aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorJohn Crispin <blogic@openwrt.org>2014-12-11 18:28:44 +0000
committerJohn Crispin <blogic@openwrt.org>2014-12-11 18:28:44 +0000
commit154f8ef0d814635d48950de09bc169106c00e8a1 (patch)
tree1651a0e95250e1e5f8a432cc2d8e280614b100da /target/linux
parent6d4c68d262595377511bd91c4b543087245af5e8 (diff)
downloadupstream-154f8ef0d814635d48950de09bc169106c00e8a1.tar.gz
upstream-154f8ef0d814635d48950de09bc169106c00e8a1.tar.bz2
upstream-154f8ef0d814635d48950de09bc169106c00e8a1.zip
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 <bittorf@bluebottle.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@43626 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux')
-rwxr-xr-xtarget/linux/au1000/base-files/etc/uci-defaults/02_network17
-rw-r--r--target/linux/au1000/base-files/lib/au1000.sh59
2 files changed, 76 insertions, 0 deletions
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"
+}