View Single Post
Old 04-01-2019, 09:37 AM   #1
BloodRagg
Zealot
BloodRagg ought to be getting tired of karma fortunes by now.BloodRagg ought to be getting tired of karma fortunes by now.BloodRagg ought to be getting tired of karma fortunes by now.BloodRagg ought to be getting tired of karma fortunes by now.BloodRagg ought to be getting tired of karma fortunes by now.BloodRagg ought to be getting tired of karma fortunes by now.BloodRagg ought to be getting tired of karma fortunes by now.BloodRagg ought to be getting tired of karma fortunes by now.BloodRagg ought to be getting tired of karma fortunes by now.BloodRagg ought to be getting tired of karma fortunes by now.BloodRagg ought to be getting tired of karma fortunes by now.
 
BloodRagg's Avatar
 
Posts: 128
Karma: 842196
Join Date: Feb 2019
Device: none
GNU HwConfig (c) GPLv2 BloodRagg @ [qXt]

GNU HwConfig (c) GPLv2 BloodRagg @ [qXt]

This is an intended replacement script for ntx_hwconfig and kobo_config.sh.
Also available on github.com/BloodRagg

The code:
Code:
#!/bin/sh
trap 'IFS=$OIFS' 0 1 2 3 15

search=$1

help(){
  cat<<EOF
*********************************************************
GNU HwConfig v0.1a (c) GPLv2 2019-04-01 BloodRagg @ [qXt]
(based on NTX HwConfig v3.1.6.29.234-20180213)

Usage: 
        ${0##*/} [OPTIONS] [FIELDNAME]

        OPTIONS :
        all  : get current configuration values. 
        list : list all configuration values.
        kobo : get kobo name.
        *    : get field value.
        -h   : show this help message 


Example:

        ${0##*/} PCB  #gets PCB value
        ${0##*/} all  #gets all values


*********************************************************
EOF
  exit 1
}

get_kobo_name(){
  [ -n "$1" ] || return 1
  case $1 in
    E60QB*|E606B*) echo kraken;;
    E5061*) echo pixie;;
    E60Q9*) [ "$RES" == "800x600" ] && echo pika || echo alyssum;;
    E606C*) echo dragon;;
    E606G*) echo dahlia;;
    E606F*) echo phoenix;;
    E70Q0*) echo daylight;;
    E60K0*|E60U1*) echo nova;;
    E60QM*) echo snow;;
    E60QL*|E60U0*|T60Q0*) echo star;;
    E80K0*) echo frost;;
    E60610*|*) echo trilogy;;
  esac
}

hwcfg=$(dd if=/dev/mmcblk0 bs=1 skip=$((0x80000)) count=128 2>/dev/null|hexdump -v -e '1/1 "%02x\n"')
hwcfg_data=${hwcfg#*00?}
for i in $hwcfg_data;do 
  [ -n "$hwcfg_len" ] || hwcfg_len=$((0x$i))
  hwcfg_data=${hwcfg_data:3:$((hwcfg_len*3-1))}
  break
done

OIFS=$IFS
IFS=$'\n'
array='
[0] PCB=[E60800|E60810|E60820|E90800|E90810|E60830|E60850|E50800|E50810|E60860|E60MT2|E60M10|E60610|E60M00|E60M30|E60620|E60630|E60640|E50600|E60680|E60610C|E60610D|E606A0|E60670|E606B0|E50620|Q70Q00|E50610|E606C0|E606D0|E606E0|E60Q00|E60Q10|E60Q20|E606F0|E606F0B|E60Q30|E60QB0|E60QC0|A13120|E60Q50|E606G0|E60Q60|E60Q80|A13130|E606H2|E60Q90|ED0Q00|E60QA0|E60QD0|E60QF0|E60QH0|E60QG0|H70000|ED0Q10|E70Q00|H40000|NC|E60QJ0|E60QL0|E60QM0|E60QK0|E70S00|T60Q00|C31Q00|E60QN0|E60U00|E70Q10|E60QP0|E60QQ0|E70Q20|T05R00|M31Q00|E60U10|E60K00|E80K00|E70Q30|EA0Q00|E60R00]
[1] KeyPad=[MX357|MX357+Wheel|MX357+Joystick|MX35-5inch|1Key|E60M10|E60M10+Touch|E60620|E60630|E60640|E606A0|FL_Key|NO_Key|FL+HOME|HOME_Key|L+R+B|FL+HOMEPAD|RETURN+HOME+MENU|HOMEPAD|L+R+SEL|PCSTD|NC|LEFT+RIGHT+HOME+MENU|L1+L2+R1+R2+TP|L1+L2+R1+R2+HOME|L1+L2+R1+R2+FL]
[2] AudioCodec=[No|ALC5623|ALC5640|NC|RTL8821CS|RTL8822BS]
[3] AudioAmp=[No|TPA2016|NC]
[4] Wifi=[No|AW-GH381|AW-GH321|GB9619|PW621|WC160|WC121|WC121A2|RTL8189|AP6476|NC|RTL8821CS|RTL8822BS|RTL8192|RTL8723DS]
[5] BT=[No|AW-GH381|AW-GH105|AP6476|CC2640|NC|RTL8821CS|RTL8822BS|RTL8723DS]
[6] Mobile=[No|Moto 3G|NC|GL852G|SIM7100]
[7] TouchCtrl=[No|TSC2004|Wacom Digitizer|Waltop Digitizer|AUO-TP2|neonode|PVI|ITE|neonode_v2|ektf2132|NC|neonode_v3|ft5x0x|CC2640|CYTT21X|FT6436|Hanvon Digitizer|GTXX]
[8] TouchType=[No|R-Type|Digitizer|C-Type|IR-Type|NC]
[9] DisplayCtrl=[S1D13521|S1D13522|K1900|M166E|MX508|K1901|MX508+TPS65185|MX6SL+TPS65185|MX6SL+FP9928|NC|IT8951+FP9928|MX7D+TPS65185|MX6ULL+FP9928|MX6SLL+FP9928|IT8951_USB|MX6SLL+TPS65185|MX6ULL+TPS65185|MX6DL+TPS65185|MX6DL+FP9928|MX6SL+SY7636|MX6ULL+SY7636|MX6SLL+SY7636|MX6DL+SY7636]
[10] DisplayPanel=[6" Left EPD|6" Right EPD|9" Right EPD|5" Left EPD|5" Right EPD|6" Top EPD|6" Bottom EPD|5" Top EPD|5" Bottom EPD|6.8" Top EPD|6.8" Bottom EPD|NC|13.3" Left EPD|13.3" Right EPD|13.3" Bottom EPD|13.3" Top EPD|7.8" Bottom EPD|7.8" Top EPD|7.8" Left EPD|7.8" Right EPD|7.3" Bottom EPD|7.3" Top EPD|7.3" Left EPD|7.3" Right EPD|4.7" Bottom EPD|4.7" Top EPD|4.7" Left EPD|4.7" Right EPD|10.3" Top EPD|10.3" Bottom EPD|10.3" Left EPD|10.3" Right EPD|8" Bottom EPD|8" Top EPD|8" Left EPD|8" Right EPD]
[11] RSensor=[No|Rotary Encoder|G Sensor|KL25|MMA8X5X|NC]
[12] MicroP=[MSP430|RC5T619|No|NC]
[13] Customer=[No Brand|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|27|28|29|30|31]
[14] Battery=[1000mA|1500mA|No|NC|AAAx2|AAAx3|AAx2|AAx3|3000mA|300mA|1200mA|1050mA|SP284657-1000mA|BatteryPack_12V|PR-284983N-1500mA|PR-248899G-3000mA]
[15] Led=[TYPE1|RGB|RG|RGH|W|G|No|WH|NC]
[16] RamSize=[128MB|64MB|256MB|512MB|1024MB|2048MB|4096MB|NC]
[17] IFlash=[Micro SD|NAND Flash|eMMC|SPI Flash|SATA-HDD|NC]
[18] ExternalMem=[No|SD|Micro SD|NC]
[19] RootFsType=[Ext2|Ext3|Ext4|Vfat|NC|RAW]
[20] SysPartType=[TYPE1|TYPE2|TYPE3|TYPE4|TYPE5|TYPE6|TYPE7|TYPE8|TYPE9|TYPE10|TYPE11|TYPE12|TYPE13|TYPE14|TYPE15|NC|TYPE16|TYPE17|TYPE18]
[21] ProgressXHiByte=0x00
[22] ProgressXLoByte=0x00
[23] ProgressYHiByte=0x00
[24] ProgressYLoByte=0x00
[25] ProgressCnts=0x00
[26] ContentType=0x00
[27] CPU=[mx35|m166e|mx50|x86|mx6|mx6sl|it8951|i386|mx7d|mx6ull|mx6sll|mx6dl]
[28] UIStyle=[Ebrmain|Customer UI|Android|NC]
[29] RAMType=[MDDR|DDR2|K4X2G323PC|K4X2G323PD|DDR3|LPDDR2|W97BH2KB|NT6TL64M32B|No|NC|LPDDR3]
[30] UIConfig=[Normal|Normal2|AD|RD|NC]
[31] DisplayResolution=[800x600|1024x758|1024x768|1440x1080|1366x768|1448x1072|1600x1200|400x375x2|1872x1404|960x540|NC|2200x1650|1440x640x4|1600x1200x4|1920x1440]
[32] FrontLight=[No|TABLE0|TABLE0+|TABLE0a|TABLE1+|TABLE2+|TABLE3+|TABLE4+|TABLE5+|TABLE6+|TABLE7+|TABLE8+|TABLE9+|TABLE10+|TABLE11+|TABLE12+|TABLE13+|TABLE14+|TABLE15+|TABLE16+]
[33] CPUFreq=[NC|800M|1G|1.2G]
[34] HallSensor=[No|TLE4913|NC]
[35] DisplayBusWidth=[8Bits|16Bits|8Bits_mirror|16Bits_mirror|NC]
[36] FrontLight_Flags=BootON:OFF,TABLE1X:OFF,EN_INV:OFF
[37] PCB_Flags=NO_KeyMatrix:ON,FPC_Touch:OFF,LOGO_LED:OFF,RD_MODE:OFF,EPD_LV:OFF,EPDVDD_STDALONE:OFF,HP_DETECT:OFF,ISD_1V8:OFF
[38] FrontLight_LEDrv=[SY7201|A8169|No|SY7311A|LM3630|LM3630+SY7201|LM3630+SY7311A|NC|SY7208|TLC5947]
[39] VCOM_10mV_HiByte=0x00
[40] VCOM_10mV_LoByte=0x00
[41] PCB_REV=0x00
[42] PCB_LVL=[A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z]
[43] HOME_LED_PWM=[No|MSP430|GPIO|NC]
[44] PMIC=[No|RC5T619|NC|BD71815]
[45] FL_PWM=[MSP430|HT68F20|LM3630|NC|MSP430+LM3630|LM3630x2|LM3630x1a|LM3630x1b|TLC5947]
[46] RTC=[MSP430|RC5T619|No|NC|BD71815]
[47] BootOpt=ESD:OFF
[48] Touch2Ctrl=[No|TSC2004|Wacom Digitizer|Waltop Digitizer|AUO-TP2|neonode|PVI|ITE|neonode_v2|ektf2132|NC|neonode_v3|ft5x0x|CC2640|CYTT21X|FT6436|Hanvon Digitizer|GTXX]
[49] Touch2Type=[No|R-Type|Digitizer|C-Type|IR-Type|NC]
[50] GPS=[No|AP6476|NC]
[51] FM=[No|AP6476|NC]
[52] RSensor2=[No|Rotary Encoder|G Sensor|KL25|MMA8X5X|NC]
[53] LightSensor=[No|STK2203|Si114x|NC]
[54] TPFWIDByte0=0x00
[55] TPFWIDByte1=0x00
[56] TPFWIDByte2=0x00
[57] TPFWIDByte3=0x00
[58] TPFWIDByte4=0x00
[59] TPFWIDByte5=0x00
[60] TPFWIDByte6=0x00
[61] TPFWIDByte7=0x00
[62] GPU=[NC|MX508|MX6SL|NO]
[63] PCB_Flags2=eMMC@SD1:OFF,WiFi@SD2:OFF,eMMC@SD2:OFF
[64] EPD_Flags=NO_VDD_CTRL:OFF,LP_PANEL:OFF
[65] LAN=[No|LAN8720]
[66] MobileIF=[NC|USB|UART|I2C|SPI]
[67] PIR=[No|GPIO]
[68] PanelLaminationSrc=[NC|KOTL]
[69] FL_CHNS=0x00
'

case $search in
  -h|"") help;;
   list) for i in $array;do case $2 in "") echo $i;; *) [ "${i/$2=}" = "$i" ] || echo $i;;esac;done;exit 1;;
    all) search="";pos=1;;
   kobo) get_kobo_name $($0 PCB);; 
esac

for i in $array;do

  [ "${i/$search=}" = "$i" ] || {
    column=${i%%] *};column=${column#[}
    line=${i#* }

    c=0;for value in $hwcfg_data;do
      [ $c = $column ] && break
      c=$((c+1))
    done

    [ -n "$pos" ] && printf "[$column] ${line%=*}="

    case $line in
      *=[*)
        line=${line#*=}
        line=${line#[}
        line=${line%]}
        IFS=$'\n|'
        c=0;for i in $line;do
          [ $c = $((0x$value)) ] && {
            echo "$i";break
          }
          c=$((c+1))
        done
      ;;
      *0x00*)
        printf "0x$value\n" $value
      ;;
      *)
        printf "${line#*=}\n" $value
      ;;
    esac
  }
  [ -n "$line" -a -n "$search" ] && break

done

exit 0
Enjoy and all bug reports all welcome
Attached Files
File Type: zip gnu_hwconfig.zip (3.5 KB, 540 views)

Last edited by BloodRagg; 04-01-2019 at 10:53 AM. Reason: Fixed typo, added zip
BloodRagg is offline   Reply With Quote