Fairly large number of Unknown SoCs detected
After Unknown SoC case matters like (https://github.com/pytorch/cpuinfo/issues/322), I decided to check real-world data to see which Android devices report their SoC name as unknown (via the cpuinfo_package.name field). It turns out that quite a few devices report an unknown SoC. We should investigate these cases to correctly identify their SoCs.
Here are several examples I found:
brand(ro.product.brand) model(ro.product.model) is_exist_on_play_store device_code(from play store) marketing_name catalog_soc(from play store)
samsung SM-A057F,SM-A057G,SM-A057M TRUE a05s Galaxy A05s QTI SM6225
Redmi 25028RN03A,25028RN03I,25028RN03Y TRUE serenity Redmi A5 Spreadtrum UMS9230E
samsung SM-S928B TRUE e3q Galaxy S24 Ultra QTI SM8650
Redmi 23124RA7EO TRUE sapphiren Redmi Note 13 QTI SM6225
OPPO CPH2641 TRUE OP5B16L1 A3x Qualcomm SM6115
OPPO CPH2641 TRUE OP5B16L1 A3x/A20 Qualcomm SM6115
samsung SM-S918B,SM-S918N TRUE dm3q Galaxy S23 Ultra QTI SM8550
Redmi 2312DRA50G,2312DRA50I TRUE garnet Redmi Note 13 Pro 5G Qualcomm SM7435
OPPO CPH2631 TRUE OP5AE7L1 A60 QTI SM6225
samsung SM-S938B TRUE pa3q Galaxy S25 Ultra QTI SM8750
samsung SM-S911B TRUE dm1q Galaxy S23 QTI SM8550
OPPO CPH2669 TRUE OP5B16L1 A3 Qualcomm SM6115
OPPO CPH2669 TRUE OP5B16L1 A40/A40m Qualcomm SM6115
samsung SM-A047F TRUE a04s Galaxy A04s Samsung Exynos 850
samsung SM-A217F,SM-A217M TRUE a21s Galaxy A21s Samsung Exynos 850
OPPO CPH2669 TRUE OP5B16L1 A40/A3/A40m Qualcomm SM6115
samsung SM-A127F TRUE a12s Galaxy A12 Samsung Exynos 850
vivo V2419 TRUE V2419 Y19s pro Spreadtrum T612
vivo V2419 TRUE V2419 vivo Y19s Spreadtrum T612
iQOO I2218,I2219,I2220,I2401 FALSE
cc @fbarchard @GregoryComer
Yeah, I need to revert the other PR with a more targeted fix for the UNISOCs. It may be a few days, but I'll see if I can get the merged soon.
I've checked some Google devices which reports as Unknown:
Pixel 6A Tensor Octa-core (2x2.80 GHz Cortex-X1 & 2x2.25 GHz Cortex-A76 & 4x1.80 GHz Cortex-A55) Mali-G78 MP20
Pixel 9A Tensor G4 - tegu Octa-core (1x3.1 GHz Cortex-X4 & 3x2.6 GHz Cortex-A720 & 4x1.9 GHz Cortex-A520) Mali-G715 MP7
Let me know if I can help with logs/data to add support for those CPU from Google.
There is no Exynos or Tensor support. I think the field we want is soc. eq Samsung S23: [ro.soc.model]: [SM8550]
The pixel 6a reports Tensor in ro.soc.model.
The pixel 9a reports Tensor G4. So that seems a good fallback.
For Exynos, I use that file: /sys/devices/system/chip-id/ap_id
I have a Samsung S23 handy, and can confirm SoC is 'unknown'
SoC name: Unknown Microarchitectures: 1x Cortex-X3 4x Cortex-A715 3x Cortex-A510 Cores: 0: 1 processor (0), ARM Cortex-X3 1: 1 processor (1), ARM Cortex-A715 2: 1 processor (2), ARM Cortex-A715 3: 1 processor (3), ARM Cortex-A715 4: 1 processor (4), ARM Cortex-A715 5: 1 processor (5), ARM Cortex-A510 6: 1 processor (6), ARM Cortex-A510 7: 1 processor (7), ARM Cortex-A510 Clusters: 0: 1 processor (0), 0: 1 core (0), ARM Cortex-X3 1: 4 processors (1-4), 1: 4 cores (1-4), ARM Cortex-A715 2: 3 processors (5-7), 2: 3 cores (5-7), ARM Cortex-A510 Logical processors (System ID): 0 (7) 1 (3) 2 (4) 3 (5) 4 (6) 5 (0) 6 (1) 7 (2)
The property works adb shell getprop ro.product.model SM-S918U1
In general Qualcomm, Exynos and Pixel fail
MediaTek works SoC name: MediaTek MT6993 but the name is different than the property adb shell getprop ro.product.model V2509A These are properties that use the MT6993 name adb shell getprop | grep mt.*6993 -i [ro.board.platform]: [mt6993] [ro.boot.hardware]: [mt6993] [ro.gfx.driver.0]: [com.mediatek.mt6993.gamedriver] [ro.hardware]: [mt6993] [ro.soc.model]: [MT6993] [ro.vendor.mediatek.platform]: [MT6993] [ro.vendor.soc.model]: [MT6993] [ro.vendor.soc.model.external_name]: [MT6993W/CZA] [ro.vendor.soc.model.part_name]: [MT6993W/CZA] [ro.vivo.product.platform]: [MTK6993]
I've noticed ro.soc.model usually matches what we expect, for newer SoC. But is missing on older devices. Pixel 8 Pro (husky) SoC name: Unknown Microarchitectures: 9x Cortex-A510
[ro.product.model]: [Pixel 8 Pro]
adb shell getprop | grep tensor -i [ro.soc.model]: [Tensor G3]
ro.product.model identifies the phone/laptop... it isnt what cpuinfo needs to know ro.soc.model is the soc that goes in that phone. We should add that and use it when available.
e.g. Pixel 2 XL doesnt have an 'soc' field adb shell getprop | grep model [ro.product.model]: [Pixel 2 XL] [ro.product.odm.model]: [Pixel 2 XL] [ro.product.product.model]: [Pixel 2 XL] [ro.product.system.model]: [Pixel 2 XL] [ro.product.system_ext.model]: [Pixel 2 XL] [ro.product.vendor.model]: [Pixel 2 XL]
But /proc/cpuinfo has the 'Hardware' adb shell more /proc/cpuinfo | grep Hardware Hardware : Qualcomm Technologies, Inc MSM8998 If I search for that, it has an old property adb shell getprop | grep 8998 [ro.board.platform]: [msm8998]
I suggest ro.soc.model will fix Qualcomm, Exynos and Tensor.