alexmyczko / ruptime

poor man’s ruptime
https://wedonthaveaprivacyproblem.com/ruptime
GNU Affero General Public License v3.0
146 stars 7 forks source link

systems without dmidecode support, mainly arm64 #9

Closed alexmyczko closed 7 months ago

alexmyczko commented 7 months ago

echo "$(cat /sys/firmware/devicetree/base/compatible|tr -d '\0')"

$ cat /sys/firmware/devicetree/base/model 
Raspberry Pi 4 Model B Rev 1.1
$ cat /sys/firmware/devicetree/base/compatible 
raspberrypi,4-model-bbrcm,bcm2711
$ cat /sys/firmware/devicetree/base/serial-number 
10000000XXXXXXXX
$ cat cat /sys/firmware/devicetree/base/model
Raspberry Pi 3 Model B Rev 1.2
$ cat /sys/firmware/devicetree/base/compatible 
raspberrypi,3-model-bbrcm,bcm2837
$ cat /sys/firmware/devicetree/base/serial-number 
00000000XXXXXXX

See https://en.wikipedia.org/wiki/Raspberry_Pi#Model_comparison

$ cat /sys/firmware/devicetree/base/serial-number 
XXXXXXXXXXXX
$ cat /sys/firmware/devicetree/base/compatible    
apple,j293apple,t8103apple,arm-platform
$ cat /sys/firmware/devicetree/base/model      
Apple MacBook Pro (13-inch, M1, 2020)

See https://github.com/torvalds/linux/tree/master/arch/arm64/boot/dts/apple and https://en.wikipedia.org/wiki/Apple_silicon#Comparison_of_M_series_processors

also see https://github.com/alexmyczko/autoexec.bat/blob/master/notdmidecode

alexmyczko commented 7 months ago

in linux/arch/arm64/boot/dts/apple$ grep -A1 "j.*.*t.*" * |grep model |sed "s,.dts-.*model =,,;s,;,,g"

t6000-j314s "Apple MacBook Pro (14-inch, M1 Pro, 2021)"
t6000-j316s "Apple MacBook Pro (16-inch, M1 Pro, 2021)"
t6001-j314c "Apple MacBook Pro (14-inch, M1 Max, 2021)"
t6001-j316c "Apple MacBook Pro (16-inch, M1 Max, 2021)"
t6001-j375c "Apple Mac Studio (M1 Max, 2022)"
t6002-j375d "Apple Mac Studio (M1 Ultra, 2022)"
t6020-j414s "Apple MacBook Pro (14-inch, M2 Pro, 2023)"
t6020-j416s "Apple MacBook Pro (16-inch, M2 Pro, 2023)"
t6020-j474s "Apple Mac Mini (M2 Pro, 2023)"
t6021-j414c "Apple MacBook Pro (14-inch, M2 Max, 2023)"
t6021-j416c "Apple MacBook Pro (16-inch, M2 Max, 2023)"
t6021-j475c "Apple Mac Studio (M2 Max, 2023)"
t6022-j180d "Apple Mac Pro (M2 Ultra, 2023)"
t6022-j475d "Apple Mac Studio (M2 Ultra, 2023)"
t8103-j274 "Apple Mac mini (M1, 2020)"
t8103-j293 "Apple MacBook Pro (13-inch, M1, 2020)"
t8103-j313 "Apple MacBook Air (M1, 2020)"
t8103-j456 "Apple iMac (24-inch, 4x USB-C, M1, 2021)"
t8103-j457 "Apple iMac (24-inch, 2x USB-C, M1, 2021)"
t8112-j413 "Apple MacBook Air (13-inch, M2, 2022)"
t8112-j415 "Apple MacBook Air (15-inch, M2, 2023)"
t8112-j473 "Apple Mac mini (M2, 2023)"
t8112-j493 "Apple MacBook Pro (13-inch, M2, 2022)"
alexmyczko commented 7 months ago

lut2sed ready

grep -A1 "j.*.*t.*" * |grep model |sed "s,.dts-.*model =,,;s,;,,g;s,-, ,1;" | awk '{print "apple," $2 "apple," $1 ",arm " $NF"/06/06"}' |sed 's,)"

apple,j314sapple,t6000,arm 2021/06/06
apple,j316sapple,t6000,arm 2021/06/06
apple,j314capple,t6001,arm 2021/06/06
apple,j316capple,t6001,arm 2021/06/06
apple,j375capple,t6001,arm 2022/06/06
apple,j375dapple,t6002,arm 2022/06/06
apple,j414sapple,t6020,arm 2023/06/06
apple,j416sapple,t6020,arm 2023/06/06
apple,j474sapple,t6020,arm 2023/06/06
apple,j414capple,t6021,arm 2023/06/06
apple,j416capple,t6021,arm 2023/06/06
apple,j475capple,t6021,arm 2023/06/06
apple,j180dapple,t6022,arm 2023/06/06
apple,j475dapple,t6022,arm 2023/06/06
apple,j274apple,t8103,arm 2020/06/06
apple,j293apple,t8103,arm 2020/06/06
apple,j313apple,t8103,arm 2020/06/06
apple,j456apple,t8103,arm 2021/06/06
apple,j457apple,t8103,arm 2021/06/06
apple,j413apple,t8112,arm 2022/06/06
apple,j415apple,t8112,arm 2023/06/06
apple,j473apple,t8112,arm 2023/06/06
apple,j493apple,t8112,arm 2022/06/06
alexmyczko commented 7 months ago

and for raspberry pis

bcm2835 2012/03/01
bcm2835 2014/07/14
bcm2836 2015/02/02
bcm2837 2015/02/02
bcm2711 2019/06/24
rp2040 2021/11/02
bcm2712 2023/10/23
alexmyczko commented 7 months ago

ok this appears to work

echo $(cat /sys/firmware/devicetree/base/compatible|tr -d '\0') | sed "$(echo `cat lut.txt |awk '{print "s,.*" $1 ".*," $2 ",;"}'`)"

with lut.txt being

bcm2835 2012/03/01
bcm2835 2014/07/14
bcm2836 2015/02/02
bcm2837 2015/02/02
bcm2711 2019/06/24
rp2040 2021/11/02
bcm2712 2023/10/23
j314s.*t6000 2021/06/06
j316s.*t6000 2021/06/06
j314c.*t6001 2021/06/06
j316c.*t6001 2021/06/06
j375c.*t6001 2022/06/06
j375d.*t6002 2022/06/06
j414s.*t6020 2023/06/06
j416s.*t6020 2023/06/06
j474s.*t6020 2023/06/06
j414c.*t6021 2023/06/06
j416c.*t6021 2023/06/06
j475c.*t6021 2023/06/06
j180d.*t6022 2023/06/06
j475d.*t6022 2023/06/06
j274.*t8103 2020/06/06
j293.*t8103 2020/06/06
j313.*t8103 2020/06/06
j456.*t8103 2021/06/06
j457.*t8103 2021/06/06
j413.*t8112 2022/06/06
j415.*t8112 2023/06/06
j473.*t8112 2023/06/06
j493.*t8112 2022/06/06

hm cat lut.txt |awk '{print "s,.*" $1 ".*," $2 ",;"}'

then we can do a oneliner, getting rid of lut.txt

echo $(cat /sys/firmware/devicetree/base/compatible|tr -d '\0') | sed "s,.*bcm2835.*,2012/03/01,; s,.*bcm2835.*,2014/07/14,; s,.*bcm2836.*,2015/02/02,; s,.*bcm2837.*,2015/02/02,; s,.*bcm2711.*,2019/06/24,; s,.*rp2040.*,2021/11/02,; s,.*bcm2712.*,2023/10/23,; s,.*j314s.*t6000.*,2021/06/06,; s,.*j316s.*t6000.*,2021/06/06,; s,.*j314c.*t6001.*,2021/06/06,; s,.*j316c.*t6001.*,2021/06/06,; s,.*j375c.*t6001.*,2022/06/06,; s,.*j375d.*t6002.*,2022/06/06,; s,.*j414s.*t6020.*,2023/06/06,; s,.*j416s.*t6020.*,2023/06/06,; s,.*j474s.*t6020.*,2023/06/06,; s,.*j414c.*t6021.*,2023/06/06,; s,.*j416c.*t6021.*,2023/06/06,; s,.*j475c.*t6021.*,2023/06/06,; s,.*j180d.*t6022.*,2023/06/06,; s,.*j475d.*t6022.*,2023/06/06,; s,.*j274.*t8103.*,2020/06/06,; s,.*j293.*t8103.*,2020/06/06,; s,.*j313.*t8103.*,2020/06/06,; s,.*j456.*t8103.*,2021/06/06,; s,.*j457.*t8103.*,2021/06/06,; s,.*j413.*t8112.*,2022/06/06,; s,.*j415.*t8112.*,2023/06/06,; s,.*j473.*t8112.*,2023/06/06,; s,.*j493.*t8112.*,2022/06/06,;"