pdx213-temp/README.md
2026-11-02 00:36:50 +01:00

172 lines
6.8 KiB
Markdown

# 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 | ✅ | ✅ | ✅ |
| 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 | ✅ | ✅ | ✅ |
| Calls | | | |
| Camera | to do | | |
| CDSP | ✅ | ✅ | ✅ |
| Display Panel | ✅ | - | [Marijn Suijten is working on panel support](https://lore.kernel.org/all/20251222-drm-panels-sony-v2-0-82a87465d163@somainline.org/) |
| 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 | ✅ | ✅ | ✅ |
| GPS | requires the modem to be up and then testing | | |
| Haptics | | |
| IPA | ✅ | ✅ | ✅ |
| microSD | ✅ | was already part of upstream | - |
| Modem | ✅ (requires TA service to run) | ✅ | ✅ |
| NFC | to do, low priority | | |
| RTC | ✅ | ✅ | ✅ |
| 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) | ✅ | ✅ |
| 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 <- no idea what needs doing
#### 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/20261102-pdx213-upstream-3-v3-0-cdc3be96d257@erebion.eu/T/#m298092e68096e7d297891c4691d9d62cd3b2447d |
### 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](https://github.com/linux-msm/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
```