ar71xx: add user-space support for the OpenMesh OM5P-AN
[openwrt.git] / target / linux / ar71xx / base-files / lib / ar71xx.sh
1 #!/bin/sh
2 #
3 # Copyright (C) 2009-2011 OpenWrt.org
4 #
5
6 AR71XX_BOARD_NAME=
7 AR71XX_MODEL=
8
9 ar71xx_get_mtd_offset_size_format() {
10         local mtd="$1"
11         local offset="$2"
12         local size="$3"
13         local format="$4"
14         local dev
15
16         dev=$(find_mtd_part $mtd)
17         [ -z "$dev" ] && return
18
19         dd if=$dev bs=1 skip=$offset count=$size 2>/dev/null | hexdump -v -e "1/1 \"$format\""
20 }
21
22 ar71xx_get_mtd_part_magic() {
23         local mtd="$1"
24         ar71xx_get_mtd_offset_size_format "$mtd" 0 4 %02x
25 }
26
27 wndr3700_board_detect() {
28         local machine="$1"
29         local magic
30         local name
31
32         name="wndr3700"
33
34         magic="$(ar71xx_get_mtd_part_magic firmware)"
35         case $magic in
36         "33373030")
37                 machine="NETGEAR WNDR3700"
38                 ;;
39         "33373031")
40                 local model
41                 model=$(ar71xx_get_mtd_offset_size_format art 56 10 %c)
42                 if [ -z "$model" ] || [ "$model" = $'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff' ]; then
43                         machine="NETGEAR WNDR3700v2"
44                 elif [ -z "$model" ] || [ "$model" = $'\xff\xff\xff\xff\xff\xff\xff\xff\xffN' ]; then
45                         machine="NETGEAR WNDRMAC"
46                 else
47                         machine="NETGEAR $model"
48                 fi
49                 ;;
50         esac
51
52         AR71XX_BOARD_NAME="$name"
53         AR71XX_MODEL="$machine"
54 }
55
56 cybertan_get_hw_magic() {
57         local part
58
59         part=$(find_mtd_part firmware)
60         [ -z "$part" ] && return 1
61
62         dd bs=8 count=1 skip=0 if=$part 2>/dev/null | hexdump -v -n 8 -e '1/1 "%02x"'
63 }
64
65 tplink_get_hwid() {
66         local part
67
68         part=$(find_mtd_part firmware)
69         [ -z "$part" ] && return 1
70
71         dd if=$part bs=4 count=1 skip=16 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
72 }
73
74 tplink_get_mid() {
75         local part
76
77         part=$(find_mtd_part firmware)
78         [ -z "$part" ] && return 1
79
80         dd if=$part bs=4 count=1 skip=17 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
81 }
82
83 tplink_board_detect() {
84         local model="$1"
85         local hwid
86         local hwver
87
88         hwid=$(tplink_get_hwid)
89         mid=$(tplink_get_mid)
90         hwver=${hwid:6:2}
91         hwver="v${hwver#0}"
92
93         case "$hwid" in
94         "015000"*)
95                 model="EasyLink EL-M150"
96                 ;;
97         "015300"*)
98                 model="EasyLink EL-MINI"
99                 ;;
100         "120000"*)
101                 model="MERCURY MAC1200R"
102                 ;;
103         "3C0001"*)
104                 model="OOLITE"
105                 ;;
106         "070300"*)
107                 model="TP-Link TL-WR703N"
108                 ;;
109         "071000"*)
110                 model="TP-Link TL-WR710N"
111                 ;;
112         "072001"*)
113                 model="TP-Link TL-WR720N"
114                 ;;
115         "070100"*)
116                 model="TP-Link TL-WA701N/ND"
117                 ;;
118         "073000"*)
119                 model="TP-Link TL-WA730RE"
120                 ;;
121         "074000"*)
122                 model="TP-Link TL-WR740N/ND"
123                 ;;
124         "074100"*)
125                 model="TP-Link TL-WR741N/ND"
126                 ;;
127         "074300"*)
128                 model="TP-Link TL-WR743N/ND"
129                 ;;
130         "075000"*)
131                 model="TP-Link TL-WA750RE"
132                 ;;
133         "721000"*)
134                 model="TP-Link TL-WA7210N"
135                 ;;
136         "751000"*)
137                 model="TP-Link TL-WA7510N"
138                 ;;
139         "080100"*)
140                 model="TP-Link TL-WA801N/ND"
141                 ;;
142         "083000"*)
143                 model="TP-Link TL-WA830RE"
144                 ;;
145         "084100"*)
146                 model="TP-Link TL-WR841N/ND"
147                 ;;
148         "084200"*)
149                 model="TP-Link TL-WR842N/ND"
150                 ;;
151         "084300"*)
152                 model="TP-Link TL-WR843N/ND"
153                 ;;
154         "085000"*)
155                 model="TP-Link TL-WA850RE"
156                 ;;
157         "086000"*)
158                 model="TP-Link TL-WA860RE"
159                 ;;
160         "090100"*)
161                 model="TP-Link TL-WA901N/ND"
162                 ;;
163         "094100"*)
164                 if [ "$hwid" = "09410002" -a "$mid" = "00420001" ]; then
165                         model="Rosewill RNX-N360RT"
166                         hwver=""
167                 else
168                         model="TP-Link TL-WR941N/ND"
169                 fi
170                 ;;
171         "104100"*)
172                 model="TP-Link TL-WR1041N/ND"
173                 ;;
174         "104300"*)
175                 model="TP-Link TL-WR1043N/ND"
176                 ;;
177         "254300"*)
178                 model="TP-Link TL-WR2543N/ND"
179                 ;;
180         "001001"*)
181                 model="TP-Link TL-MR10U"
182                 ;;
183         "001101"*)
184                 model="TP-Link TL-MR11U"
185                 ;;
186         "001201"*)
187                 model="TP-Link TL-MR12U"
188                 ;;
189         "001301"*)
190                 model="TP-Link TL-MR13U"
191                 ;;
192         "302000"*)
193                 model="TP-Link TL-MR3020"
194                 ;;
195         "304000"*)
196                 model="TP-Link TL-MR3040"
197                 ;;
198         "322000"*)
199                 model="TP-Link TL-MR3220"
200                 ;;
201         "342000"*)
202                 model="TP-Link TL-MR3420"
203                 ;;
204         "350000"*)
205                 model="TP-Link TL-WDR3500"
206                 ;;
207         "360000"*)
208                 model="TP-Link TL-WDR3600"
209                 ;;
210         "430000"*)
211                 model="TP-Link TL-WDR4300"
212                 ;;
213         "430080"*)
214                 iw reg set IL
215                 model="TP-Link TL-WDR4300 (IL)"
216                 ;;
217         "431000"*)
218                 model="TP-Link TL-WDR4310"
219                 ;;
220         "49000002")
221                 model="TP-Link TL-WDR4900"
222                 ;;
223         "453000"*)
224                 model="MERCURY MW4530R"
225                 ;;
226         "934100"*)
227                 model="NC-LINK SMART-300"
228                 ;;
229         "c50000"*)
230                 model="TP-Link Archer C5"
231                 ;;
232         "750000"*|\
233         "c70000"*)
234                 model="TP-Link Archer C7"
235                 ;;
236         *)
237                 hwver=""
238                 ;;
239         esac
240
241         AR71XX_MODEL="$model $hwver"
242 }
243
244 tplink_pharos_get_model_string() {
245         local part
246         part=$(find_mtd_part 'product-info')
247         [ -z "$part" ] && return 1
248
249         # The returned string will end with \r\n, but we don't remove it here
250         # to simplify matching against it in the sysupgrade image check
251         dd if=$part bs=1 skip=4360 2>/dev/null | head -n 1
252 }
253
254 tplink_pharos_board_detect() {
255         local model_string="$(tplink_pharos_get_model_string | tr -d '\r')"
256         local oIFS="$IFS"; IFS=":"; set -- $model_string; IFS="$oIFS"
257         local model
258
259         case "$1" in
260         'CPE210(TP-LINK|UN|N300-2)')
261                 model='TP-Link CPE210'
262                 ;;
263         'CPE220(TP-LINK|UN|N300-2)')
264                 model='TP-Link CPE220'
265                 ;;
266         'CPE510(TP-LINK|UN|N300-5)')
267                 model='TP-Link CPE510'
268                 ;;
269         'CPE520(TP-LINK|UN|N300-5)')
270                 model='TP-Link CPE520'
271                 ;;
272         esac
273
274         [ -n "$model" ] && AR71XX_MODEL="$model v$2"
275 }
276
277 gl_inet_board_detect() {
278         local size="$(mtd_get_part_size 'firmware')"
279
280         case "$size" in
281         8192000)
282                 AR71XX_MODEL='GL-iNet 6408A v1'
283                 ;;
284         16580608)
285                 AR71XX_MODEL='GL-iNet 6416A v1'
286                 ;;
287         esac
288 }
289
290 ar71xx_board_detect() {
291         local machine
292         local name
293
294         machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /proc/cpuinfo)
295
296         case "$machine" in
297         *"Oolite V1.0")
298                 name="oolite"
299                 ;;
300         *"AC1750DB")
301                 name="f9k1115v2"
302                 ;;
303         *"AirGateway")
304                 name="airgateway"
305                 ;;
306         *"AirRouter")
307                 name="airrouter"
308                 ;;
309         *"ALFA Network AP96")
310                 name="alfa-ap96"
311                 ;;
312         *"ALFA Network N2/N5")
313                 name="alfa-nx"
314                 ;;
315         *ALL0258N)
316                 name="all0258n"
317                 ;;
318         *ALL0305)
319                 name="all0305"
320                 ;;
321         *ALL0315N)
322                 name="all0315n"
323                 ;;
324         *AP113)
325                 name="ap113"
326                 ;;
327         *AP121)
328                 name="ap121"
329                 ;;
330         *AP121-MINI)
331                 name="ap121-mini"
332                 ;;
333         *"AP132 reference board")
334                 name="ap132"
335                 ;;
336         *"AP136-010 reference board")
337                 name="ap136-010"
338                 ;;
339         *"AP136-020 reference board")
340                 name="ap136-020"
341                 ;;
342         *"AP135-020 reference board")
343                 name="ap135-020"
344                 ;;
345         *AP81)
346                 name="ap81"
347                 ;;
348         *AP83)
349                 name="ap83"
350                 ;;
351         *"Archer C5")
352                 name="archer-c5"
353                 ;;
354         *"Archer C7")
355                 name="archer-c7"
356                 ;;
357         *"Atheros AP96")
358                 name="ap96"
359                 ;;
360         *AW-NR580)
361                 name="aw-nr580"
362                 ;;
363         *CAP4200AG)
364                 name="cap4200ag"
365                 ;;
366         *"CPE210/220/510/520")
367                 name="cpe510"
368                 tplink_pharos_board_detect
369                 ;;
370         *"DB120 reference board")
371                 name="db120"
372                 ;;
373         *"DGL-5500 rev. A1")
374                 name="dgl-5500-a1"
375                 ;;
376         *"DHP-1565 rev. A1")
377                 name="dhp-1565-a1"
378                 ;;
379         *"DIR-505 rev. A1")
380                 name="dir-505-a1"
381                 ;;
382         *"DIR-600 rev. A1")
383                 name="dir-600-a1"
384                 ;;
385         *"DIR-615 rev. E1")
386                 name="dir-615-e1"
387                 ;;
388         *"DIR-615 rev. E4")
389                 name="dir-615-e4"
390                 ;;
391         *"DIR-825 rev. B1")
392                 name="dir-825-b1"
393                 ;;
394         *"DIR-825 rev. C1")
395                 name="dir-825-c1"
396                 ;;
397         *"DIR-835 rev. A1")
398                 name="dir-835-a1"
399                 ;;
400         *"Dragino v2")
401                 name="dragino2"
402                 ;;
403         *"EAP300 v2")
404                 name="eap300v2"
405                 ;;
406         *EAP7660D)
407                 name="eap7660d"
408                 ;;
409         *EL-M150)
410                 name="el-m150"
411                 ;;
412         *EL-MINI)
413                 name="el-mini"
414                 ;;
415         *"GL-CONNECT INET v1")
416                 name="gl-inet"
417                 gl_inet_board_detect
418                 ;;
419         *"EnGenius ESR1750")
420                 name="esr1750"
421                 ;;
422         *"EnGenius ESR900")
423                 name="esr900"
424                 ;;
425         *JA76PF)
426                 name="ja76pf"
427                 ;;
428         *JA76PF2)
429                 name="ja76pf2"
430                 ;;
431         *"Bullet M")
432                 name="bullet-m"
433                 ;;
434         *"Loco M XW")
435                 name="loco-m-xw"
436                 ;;
437         *"Nanostation M")
438                 name="nanostation-m"
439                 ;;
440         *"Nanostation M XW")
441                 name="nanostation-m-xw"
442                 ;;
443         *JWAP003)
444                 name="jwap003"
445                 ;;
446         *"Hornet-UB")
447                 local size
448                 size=$(awk '/firmware/ { print $2 }' /proc/mtd)
449
450                 if [ "x$size" = "x00790000" ]; then
451                         name="hornet-ub"
452                 fi
453
454                 if [ "x$size" = "x00f90000" ]; then
455                         name="hornet-ub-x2"
456                 fi
457                 ;;
458         *LS-SR71)
459                 name="ls-sr71"
460                 ;;
461         *"MAC1200R")
462                 name="mc-mac1200r"
463                 ;;
464         *MR600v2)
465                 name="mr600v2"
466                 ;;
467         *MR600)
468                 name="mr600"
469                 ;;
470         *MR900)
471                 name="mr900"
472                 ;;
473         *MR900v2)
474                 name="mr900v2"
475                 ;;
476         *"My Net N600")
477                 name="mynet-n600"
478                 ;;
479         *"My Net N750")
480                 name="mynet-n750"
481                 ;;
482         *"WD My Net Wi-Fi Range Extender")
483                 name="mynet-rext"
484                 ;;
485         *MZK-W04NU)
486                 name="mzk-w04nu"
487                 ;;
488         *MZK-W300NH)
489                 name="mzk-w300nh"
490                 ;;
491         *"NBG460N/550N/550NH")
492                 name="nbg460n_550n_550nh"
493                 ;;
494         *"Zyxel NBG6716")
495                 name="nbg6716"
496                 ;;
497         *OM2P)
498                 name="om2p"
499                 ;;
500         *OM2Pv2)
501                 name="om2pv2"
502                 ;;
503         *"OM2P HS")
504                 name="om2p-hs"
505                 ;;
506         *"OM2P HSv2")
507                 name="om2p-hsv2"
508                 ;;
509         *"OM2P LC")
510                 name="om2p-lc"
511                 ;;
512         *OM5P)
513                 name="om5p"
514                 ;;
515         *"OM5P AN")
516                 name="om5p-an"
517                 ;;
518         *PB42)
519                 name="pb42"
520                 ;;
521         *"PB44 reference board")
522                 name="pb44"
523                 ;;
524         *PB92)
525                 name="pb92"
526                 ;;
527         *"Qihoo 360 C301")
528                 name="qihoo-c301"
529                 ;;
530         *"RouterBOARD 411/A/AH")
531                 name="rb-411"
532                 ;;
533         *"RouterBOARD 411U")
534                 name="rb-411u"
535                 ;;
536         *"RouterBOARD 433/AH")
537                 name="rb-433"
538                 ;;
539         *"RouterBOARD 433UAH")
540                 name="rb-433u"
541                 ;;
542         *"RouterBOARD 435G")
543                 name="rb-435g"
544                 ;;
545         *"RouterBOARD 450")
546                 name="rb-450"
547                 ;;
548         *"RouterBOARD 450G")
549                 name="rb-450g"
550                 ;;
551         *"RouterBOARD 493/AH")
552                 name="rb-493"
553                 ;;
554         *"RouterBOARD 493G")
555                 name="rb-493g"
556                 ;;
557         *"RouterBOARD 750")
558                 name="rb-750"
559                 ;;
560         *"RouterBOARD 750GL")
561                 name="rb-750gl"
562                 ;;
563         *"RouterBOARD 751")
564                 name="rb-751"
565                 ;;
566         *"RouterBOARD 751G")
567                 name="rb-751g"
568                 ;;
569         *"RouterBOARD 911G-2HPnD")
570                 name="rb-911g-2hpnd"
571                 ;;
572         *"RouterBOARD 911G-5HPnD")
573                 name="rb-911g-5hpnd"
574                 ;;
575         *"RouterBOARD 912UAG-2HPnD")
576                 name="rb-912uag-2hpnd"
577                 ;;
578         *"RouterBOARD 912UAG-5HPnD")
579                 name="rb-912uag-5hpnd"
580                 ;;
581         *"RouterBOARD 951G-2HnD")
582                 name="rb-951g-2hnd"
583                 ;;
584         *"RouterBOARD 951Ui-2HnD")
585                 name="rb-951ui-2hnd"
586                 ;;
587         *"RouterBOARD 2011L")
588                 name="rb-2011l"
589                 ;;
590         *"RouterBOARD 2011UAS")
591                 name="rb-2011uas"
592                 ;;
593         *"RouterBOARD 2011UiAS")
594                 name="rb-2011uias"
595                 ;;
596         *"RouterBOARD 2011UAS-2HnD")
597                 name="rb-2011uas-2hnd"
598                 ;;
599         *"RouterBOARD 2011UiAS-2HnD")
600                 name="rb-2011uias-2hnd"
601                 ;;
602         *"RouterBOARD SXT Lite2")
603                 name="rb-sxt2n"
604                 ;;
605         *"RouterBOARD SXT Lite5")
606                 name="rb-sxt5n"
607                 ;;
608         *"Rocket M")
609                 name="rocket-m"
610                 ;;
611         *RouterStation)
612                 name="routerstation"
613                 ;;
614         *"RouterStation Pro")
615                 name="routerstation-pro"
616                 ;;
617         *RW2458N)
618                 name="rw2458n"
619                 ;;
620         *"SMART-300")
621                 name="smart-300"
622                 ;;
623         *TEW-632BRP)
624                 name="tew-632brp"
625                 ;;
626         *TEW-673GRU)
627                 name="tew-673gru"
628                 ;;
629         *TEW-712BR)
630                 name="tew-712br"
631                 ;;
632         *TEW-732BR)
633                 name="tew-732br"
634                 ;;
635         *"TL-WR1041N v2")
636                 name="tl-wr1041n-v2"
637                 ;;
638         *TL-WR1043ND)
639                 name="tl-wr1043nd"
640                 ;;
641         *"TL-WR1043ND v2")
642                 name="tl-wr1043nd-v2"
643                 ;;
644         *TL-WR2543N*)
645                 name="tl-wr2543n"
646                 ;;
647         *"DIR-615 rev. C1")
648                 name="dir-615-c1"
649                 ;;
650         *TL-MR3020)
651                 name="tl-mr3020"
652                 ;;
653         *TL-MR3040)
654                 name="tl-mr3040"
655                 ;;
656         *"TL-MR3040 v2")
657                 name="tl-mr3040-v2"
658                 ;;
659         *TL-MR3220)
660                 name="tl-mr3220"
661                 ;;
662         *"TL-MR3220 v2")
663                 name="tl-mr3220-v2"
664                 ;;
665         *TL-MR3420)
666                 name="tl-mr3420"
667                 ;;
668         *"TL-MR3420 v2")
669                 name="tl-mr3420-v2"
670                 ;;
671         *"TL-WA701ND v2")
672                 name="tl-wa701nd-v2"
673                 ;;
674         *"TL-WA7210N v2")
675                 name="tl-wa7210n-v2"
676                 ;;
677         *TL-WA750RE)
678                 name="tl-wa750re"
679                 ;;
680         *"TL-WA7510N v1")
681                 name="tl-wa7510n"
682                 ;;
683         *TL-WA850RE)
684                 name="tl-wa850re"
685                 ;;
686         *TL-WA860RE)
687                 name="tl-wa860re"
688                 ;;
689         *"TL-WA830RE v2")
690                 name="tl-wa830re-v2"
691                 ;;
692         *"TL-WA801ND v2")
693                 name="tl-wa801nd-v2"
694                 ;;
695         *TL-WA901ND)
696                 name="tl-wa901nd"
697                 ;;
698         *"TL-WA901ND v2")
699                 name="tl-wa901nd-v2"
700                 ;;
701         *"TL-WA901ND v3")
702                 name="tl-wa901nd-v3"
703                 ;;
704         *"TL-WDR3500")
705                 name="tl-wdr3500"
706                 ;;
707         *"TL-WDR3600/4300/4310")
708                 name="tl-wdr4300"
709                 ;;
710         *"TL-WDR4900 v2")
711                 name="tl-wdr4900-v2"
712                 ;;
713         *TL-WR741ND)
714                 name="tl-wr741nd"
715                 ;;
716         *"TL-WR741ND v4")
717                 name="tl-wr741nd-v4"
718                 ;;
719         *"TL-WR841N v1")
720                 name="tl-wr841n-v1"
721                 ;;
722         *"TL-WR841N/ND v7")
723                 name="tl-wr841n-v7"
724                 ;;
725         *"TL-WR841N/ND v8")
726                 name="tl-wr841n-v8"
727                 ;;
728         *"TL-WR841N/ND v9")
729                 name="tl-wr841n-v9"
730                 ;;
731         *"TL-WR842N/ND v2")
732                 name="tl-wr842n-v2"
733                 ;;
734         *TL-WR941ND)
735                 name="tl-wr941nd"
736                 ;;
737         *"TL-WR941N/ND v5")
738                 name="tl-wr941nd-v5"
739                 ;;
740         *"TL-WR703N v1")
741                 name="tl-wr703n"
742                 ;;
743         *"TL-WR710N v1")
744                 name="tl-wr710n"
745                 ;;
746         *"TL-WR720N v3")
747                 name="tl-wr720n-v3"
748                 ;;
749         *"TL-MR10U")
750                 name="tl-mr10u"
751                 ;;
752         *"TL-MR11U")
753                 name="tl-mr11u"
754                 ;;
755         *"TL-MR12U")
756                 name="tl-mr12u"
757                 ;;
758         *"TL-MR13U v1")
759                 name="tl-mr13u"
760                 ;;
761         *"Tube2H")
762                 name="tube2h"
763                 ;;
764         *UniFi)
765                 name="unifi"
766                 ;;
767         *"UniFi AP Pro")
768                 name="uap-pro"
769                 ;;
770         *WHR-G301N)
771                 name="whr-g301n"
772                 ;;
773         *WHR-HP-GN)
774                 name="whr-hp-gn"
775                 ;;
776         *WLAE-AG300N)
777                 name="wlae-ag300n"
778                 ;;
779         *"UniFiAP Outdoor")
780                 name="unifi-outdoor"
781                 ;;
782         *"UniFiAP Outdoor+")
783                 name="unifi-outdoor-plus"
784                 ;;
785         *WP543)
786                 name="wp543"
787                 ;;
788         *WPE72)
789                 name="wpe72"
790                 ;;
791         *WPJ558)
792                 name="wpj558"
793                 ;;
794         *WNDAP360)
795                 name="wndap360"
796                 ;;
797         *"WNDR3700/WNDR3800/WNDRMAC")
798                 wndr3700_board_detect "$machine"
799                 ;;
800         *"R6100")
801                 name="r6100"
802                 ;;
803         *"WNDR3700v4")
804                 name="wndr3700v4"
805                 ;;
806         *"WNDR4300")
807                 name="wndr4300"
808                 ;;
809         *"WNR2000 V4")
810                 name="wnr2000-v4"
811                 ;;
812         *"WNR2000 V3")
813                 name="wnr2000-v3"
814                 ;;
815         *WNR2000)
816                 name="wnr2000"
817                 ;;
818         *WNR2200)
819                 name="wnr2200"
820                 ;;
821         *"WNR612 V2")
822                 name="wnr612-v2"
823                 ;;
824         *"WNR1000 V2")
825                 name="wnr1000-v2"
826                 ;;
827         *WRT160NL)
828                 name="wrt160nl"
829                 ;;
830         *WRT400N)
831                 name="wrt400n"
832                 ;;
833         *"WZR-450HP2")
834                 name="wzr-450hp2"
835                 ;;
836         *"WZR-HP-AG300H/WZR-600DHP")
837                 name="wzr-hp-ag300h"
838                 ;;
839         *WZR-HP-G300NH)
840                 name="wzr-hp-g300nh"
841                 ;;
842         *WZR-HP-G450H)
843                 name="wzr-hp-g450h"
844                 ;;
845         *WZR-HP-G300NH2)
846                 name="wzr-hp-g300nh2"
847                 ;;
848         *WHR-HP-G300N)
849                 name="whr-hp-g300n"
850                 ;;
851         *ZCN-1523H-2)
852                 name="zcn-1523h-2"
853                 ;;
854         *ZCN-1523H-5)
855                 name="zcn-1523h-5"
856                 ;;
857         *EmbWir-Dorin)
858                 name="ew-dorin"
859                 ;;
860         *EmbWir-Dorin-Router)
861                 name="ew-dorin-router"
862                 ;;
863         "8devices Carambola2"*)
864                 name="carambola2"
865                 ;;
866         *"Sitecom WLR-8100")
867                 name="wlr8100"
868                 ;;
869         *"BHU BXU2000n-2 rev. A1")
870                 name="bxu2000n-2-a1"
871                 ;;
872         *"HiWiFi HC6361")
873                 name="hiwifi-hc6361"
874                 ;;
875         esac
876
877         [ -z "$AR71XX_MODEL" ] && [ "${machine:0:8}" = 'TP-LINK ' ] && \
878                 tplink_board_detect "$machine"
879
880         [ -z "$name" ] && name="unknown"
881
882         [ -z "$AR71XX_BOARD_NAME" ] && AR71XX_BOARD_NAME="$name"
883         [ -z "$AR71XX_MODEL" ] && AR71XX_MODEL="$machine"
884
885         [ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/"
886
887         echo "$AR71XX_BOARD_NAME" > /tmp/sysinfo/board_name
888         echo "$AR71XX_MODEL" > /tmp/sysinfo/model
889 }
890
891 ar71xx_board_name() {
892         local name
893
894         [ -f /tmp/sysinfo/board_name ] && name=$(cat /tmp/sysinfo/board_name)
895         [ -z "$name" ] && name="unknown"
896
897         echo "$name"
898 }