170 lines
7.3 KiB
Markdown
170 lines
7.3 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 | ✅ | ✅ | [yes, needs review](https://lore.kernel.org/all/20260926-pdx213-upstream-3-v1-0-1609c18b5c1d@erebion.eu/) |
|
|
| 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](https://lore.kernel.org/all/20260926-pdx213-upstream-3-v1-0-1609c18b5c1d@erebion.eu/) |
|
|
| Calls | | | |
|
|
| Camera | to do | | |
|
|
| CDSP | ✅ | ✅ | [yes, needs review](https://lore.kernel.org/all/20260926-pdx213-upstream-3-v1-0-1609c18b5c1d@erebion.eu/) |
|
|
| 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 | ✅ | ✅ | [yes, needs review](https://lore.kernel.org/all/20260926-pdx213-upstream-3-v1-0-1609c18b5c1d@erebion.eu/) |
|
|
| GPS | requires the modem to be up and then testing | | |
|
|
| Haptics | | |
|
|
| IPA | ✅ | ✅ | [yes, needs review](https://lore.kernel.org/all/20260926-pdx213-upstream-3-v1-0-1609c18b5c1d@erebion.eu/) |
|
|
| microSD | ✅ | was already part of upstream | - |
|
|
| Modem | ✅ (requires TA service to run) | ✅ | [yes, needs review](https://lore.kernel.org/all/20260926-pdx213-upstream-3-v1-0-1609c18b5c1d@erebion.eu/) |
|
|
| NFC | to do, low priority | | |
|
|
| RTC | ✅ | ✅ | [yes, needs review](https://lore.kernel.org/all/20260926-pdx213-upstream-3-v1-0-1609c18b5c1d@erebion.eu/) |
|
|
| Sound | to do | | |
|
|
| SMS | should work when modem is up, needs testing | | |
|
|
| Thermals | wip | | |
|
|
| 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](https://lore.kernel.org/all/20260926-pdx213-upstream-3-v1-0-1609c18b5c1d@erebion.eu/) |
|
|
| 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
|
|
|
|
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](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
|
|
```
|