No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-11-01 18:32:38 +01:00
notes move thermals to its own file, update status of thermals 2026-11-01 18:32:38 +01:00
README.md move thermals to its own file, update status of thermals 2026-11-01 18:32:38 +01:00

pdx213-temp

Some notes on my work getting Mobian to run on the Xperia 10 III (codename pdx213).

Status

Device Tree Status

Component Status sent to sm6350-mainline? sent upstream?
ADSP ✅ ✅ yes, needs review
Battery (percentage and temperature) ✅ ✅ Luca Weiss wrote a driver for Fairphone 4, once that is upstreamed I can submit the patch for battery percentage
Bluetooth ✅ ✅ yes, needs review
Calls
Camera to do
CDSP ✅ ✅ yes, needs review
Display Panel ✅ - Marijn Suijten is working on panel support
DP via USB-C to do, low priority
Fast Charging to do, low priority
Fingerprint Reader not interested in that part myself, probably not supported by the kernel anyway - -
Flashlight ✅ ✅ yes, needs review
GPS requires the modem to be up and then testing
Haptics
IPA ✅ ✅ yes, needs review
microSD ✅ was already part of upstream -
Modem ✅ (requires TA service to run) ✅ yes, needs review
NFC to do, low priority
RTC ✅ ✅ yes, needs review
Sound to do
SMS should work when modem is up, needs testing
Thermals ✅
Touch ✅ was already part of upstream -
UFS broken, need help
USB-C idk, USB networking works, need to check whether host mode works by plugging in at least a USB stick
Wifi ✅ (requires modem) ✅ yes, needs review
Vibration to do, low priority

No status means I haven't even had a look at that component.

So far no work has been put in supporting the sensors (accelerometer, magnetometer, ambient light, ...).

Further detail on some components can be found in the notes folder in this repo.

Where To Help

  • Audio/Calls <-- currently top priority, this would allow me testing the phone as a daily driver
  • PMIC
  • Camera
  • vibration module
  • NFC
  • UFS <- most annoying blocker for now
  • USB-C
  • Display Port via USB-C

Kernel Work

My working branch: https://salsa.debian.org/erebion/linux/-/tree/erebion/pdx213-wip

Please note that I'm not keeping this branch up to date with the latest kernel versions or fixes. I rarely update, as I don't want a moving target while debugging.

The plan is to submit all my patches to https://github.com/sm6350-mainline/linux and to then upstream them to the kernel.

Note: I'm rebasing occasionally to make sure it does not become too chaotic, so pulling from that repo will lead to merge conflicts.

Upstreaming to the kernel
no what link
0 enables a couple components Patch Series: https://lore.kernel.org/all/20260926-pdx213-upstream-3-v2-0-b4612e3eb536@erebion.eu/

Issues To Solve

"AI key"

Downstream DT contains an "AI key", not sure what to do with that.

                        ai_key {
                                label = "ai_key";
                                gpios = <0x02 0x55 0x01>;
                                linux,input-type = <0x01>;
                                linux,code = <0x1c9>;
                                gpio-key,wakeup;
                                debounce-interval = <0x0f>;
                                linux,can-disable;
                        };
Workaround for missing UFS
cd /dev/disk/
mkdir by-partlabel
ln -s /home/mobian/modemst1.img modemst1
ln -s /home/mobian/modemst2.img modemst2
#ln -s /home/mobian/TA.img TA
ln -s /home/mobian/modem_a.img modem_a
ln -s /home/mobian/modem_b.img modem_b
systemctl restart rmtfs.service tqftpserv.service qcom-modem-setup.service # to do: find out whether all three actually have to be restarted

With this the modem can be started for now...

Unlocked Achievements

  • getting a first half broken Mobian build that boots
  • getting the display to display stuff
  • full graphics support (I can play an episode of Star Trek: Stange New Worlds, although without sound)
  • playing a song via Bluetooth for the first time
  • Wifi works! :D
  • Modem starts
  • Upstreaming some patches (waiting for review on LKML)

Mobian Work

Not much that is required in terms of changes, mainly adding the device to Mobian recipes.

To Do:

  • Push changes for Mobian recipes to git
  • Add droid-juicer config
  • Amend qcom-phone-utils package (initramfs hooks, perhaps more)

Building the Kernel .deb

make defconfig pdx213_defconfig usb-gadget-network.config
make -j`nproc` bindeb-pkg

Obtaining firmware files

This should normally happen automatically using droid-juicer on first boot, however, as UFS is not supported yet, we have to boot a working system and obtain the files manually for now.

Easiest way to do that is to use SailfishOS. The licence is not required, the trial image works just fine.

Firmware files can be obtained from the partitions modem, vendor, bluetooth...

Recommendation:

  • dump partitions to .img files
  • mount .img files and extract files
  • use pil-squasher to get the files into the right format the kernel expects

Building the Image

Clone my fork of mobian-recipes (temporary fork, will integrate changes once I get to it...)

git clone https://salsa.debian.org/erebion/mobian-recipes
git checkout wip/erebion/add-pdx213

Place kernel .deb at devices/qcom/packages/

Put firmware files into devices/qcom/firmware/, this is what I currently have in there:

a615_zap.mbn       adsp.b05           adsp.b13           adsp.b20           adsp.b27           adsp.mbn           apnv11.bin         crnv20.bin         modemst1.img     
a619_gmu.bin       adsp.b06           adsp.b14           adsp.b21           adsp.b28           adspr.jsn          cdsp.mbn           crnv21.bin         modemst2.img     
adsp.b00           adsp.b07           adsp.b15           adsp.b22           adsp.b29           adsps.jsn          crbtfw11.tlv       crnv32.bin         qcom_firmware_tmp
adsp.b01           adsp.b08           adsp.b16           adsp.b23           adsp.b30           adspua.jsn         crbtfw20.tlv       crnv32u.bin        venus.mbn        
adsp.b02           adsp.b09           adsp.b17           adsp.b24           adsp.b31           apbtfw10.tlv       crbtfw21.tlv       egista.mbn         wlanmdsp.mbn     
adsp.b03           adsp.b10           adsp.b18           adsp.b25           adsp.b32           apbtfw11.tlv       crbtfw32.tlv       ipa_fws.mbn                         
adsp.b04           adsp.b12           adsp.b19           adsp.b26           adsp.b33           apnv10.bin         crnv11.bin         modem.mbn    

Build image:

sudo ./build.sh -t qcom-wip -s -u mobian -p 1234 | tee mobian-build.log