Motorola Edge 30 (motorola-dubai)
| This device has been tested with postmarketOS, but its device package has not yet been added to the postmarketOS repositories. This means that it cannot be selected in pmbootstrap. Status: WIP, base dts sent to LKML |
|
fastfetch #shotonpostmarketos | |
| Manufacturer | Motorola |
|---|---|
| Name | Edge 30 |
| Codename | motorola-dubai |
| Model | XT2203-1 |
| Released | 2022 |
| Type | handset |
| Hardware | |
| Chipset | Qualcomm Snapdragon 778G+ (SM7325-AE) |
| Display | 1080x2400 AMOLED 144Hz 6.55" |
| Storage | 128/256 GB |
| Memory | 8 GB |
| Architecture | aarch64 |
| Software | |
Original software The software and version the device was shipped with. |
Android 12 |
Extended version The most recent supported version from the manufacturer. |
Android 14 |
| FOSS bootloader | partial |
| postmarketOS | |
Pre-built images Whether pre-built images are available from the postmarketOS Installation page. |
no |
Mainline Instead of a Linux kernel fork, it is possible to run (Close to) Mainline. |
no |
Flashing Whether it is possible to flash the device with pmbootstrap flasher. |
Works
|
|---|---|
USB Networking After connecting the device with USB to your PC, you can connect to it via telnet (initramfs) or SSH (booted system). |
Works
|
Internal storage eMMC, SD cards, UFS... |
Works
|
Battery Whether charging and battery level reporting work. |
Works
|
Screen Whether the display works; ideally with sleep mode and brightness control. |
Works
|
Touchscreen |
Works
|
| Multimedia | |
3D Acceleration |
Works
|
Audio Audio playback, microphone, headset and buttons. |
Partial
|
Camera |
Partial
|
Camera Flash |
Works
|
| Connectivity | |
WiFi |
Works
|
Bluetooth |
Works
|
GPS |
Works
|
NFC Near Field Communication |
Broken
|
| Modem | |
Calls |
Partial
|
SMS |
Works
|
Mobile data |
Works
|
| Miscellaneous | |
FDE Full disk encryption and unlocking with unl0kr. |
Untested
|
USB OTG USB On-The-Go or USB-C Role switching. |
Works
|
| Sensors | |
Accelerometer Handles automatic screen rotation in many interfaces. |
Works
|
Magnetometer Sensor to measure the Earth's magnetism |
Works
|
Ambient Light Measures the light level; used for automatic screen dimming in many interfaces. |
Works
|
Proximity |
Works
|
Haptics |
Broken
|
Primary Bootloader Whether it is possible to replace stock bootloader with U-Boot. |
Broken
|
|---|---|
Secondary Bootloader Whether it is possible to chainload U-Boot from stock bootloader. |
Works
|
Mainline Whether latest upstream versions of U-Boot are not broken and it is possible to use them. |
Works
|
Internal Storage Whether it is possible to boot from internal storage (e.g. eMMC or UFS). |
Broken
|
USB Host Whether it is possible to boot from a USB storage or connect a keyboard. |
Untested
|
USB Peripheral Whether it is possible to use device as a peripheral in U-Boot, e.g. for fastboot mode. |
Works
|
Display |
Works
|
Buttons Whether it is possible to navigate in boot menu or grub with volume and power buttons. |
Partial
|
| This device is based on the Snapdragon 778G+. See the SoC page for common tips, guides and troubleshooting steps |
Contributors
Users owning this device
- ValPackett (Notes: Current upstreaming target)
How to enter flash mode
- Turn off the device.
- Press and hold the power button and volume down button.
- Release the buttons when the fastboot menu shows.
Installation
Warning: NOT YET. There are no packages yet!!
To prepare the current slot for running mainline, we need to erase Android-specific DTB Overlays and disable AVB.
For the latter, it should be enough to:
pmbootstrap flasher flash_vbmeta
Optionally (?) instead, you can make an image that avoids the rollback warning when flashing:
avbtool make_vbmeta_image --flags 2 --padding_size 8192 --rollback_index 32 --output blank.vbmeta.img fastboot flash vbmeta blank.vbmeta.img
Now for the former… You can't just fastboot erase dtbo because of Motorola's creative decisions :) Instead, create a blank file and flash it:
dd if=/dev/zero of=blank.dtbo.img bs=25165824 count=1 fastboot flash dtbo blank.dtbo.img
With these preparations, we can now proceed with installing postmarketOS.
Eventually, U-Boot shall be used as an intermediate bootloader. However for now, unfortunately, it is useless because its UFS support is somehow broken specifically on this SoC specifically with UFS 3.x (this also affects e.g. the Nothing Phone 1 (nothing-spacewar). So we have to flash the kernel directly into the boot partition:
pmbootstrap flasher flash_kernel
And now flash the rootfs to the userdata partit-Permission denied! Apparently userdata is the opposite of dtbo: you can only erase it but not flash it. Now we have to get very slightly creative.
Since we have the boot.img running, we can just use the debug shell to flash the rootfs. Connect the USB cable, hold when Linux is starting to boot (i.e. on the "press to pause" screen) or wait for the root mount to fail.
In one terminal, connect to the debug shell and set up netcat on the phone to receive the image:
telnet 172.16.42.1 nc -l -p 6969 </dev/null >/dev/disk/by-partlabel/userdata
In another terminal (i.e. from your local machine) send the image (in this example using pv for a progress bar:
pv -p - <~/.local/var/pmbootstrap/chroot_native/home/pmos/rootfs/motorola-dubai.img | nc 172.16.42.1 6969
Now reboot on the phone and enjoy! :D
Table of hardware
| Component | Model | Status | Notes |
|---|---|---|---|
| SoC | Qualcomm Snapdragon 778G+ (SM7325-AE) | Y | Well supported upstream |
| Main PMIC | Qualcomm PM7325 | Y | |
| Storage | Micron MT128GAXAT2U3165 | Y | UFS 3.1, works in Linux but not in U-Boot |
| Display | CSOT or Tianma with Novatek NT37701 controller | Y | DSC, command mode, 48/60/90/120/144Hz modes, built-in brightness. Driver is WIP. |
| Touch controller | Goodix GT9916 | Y | SPI interface |
| Wi-Fi/BT | Qualcomm WCN6750 | Y | Only 2.4GHz connects, TODO: check calibration files |
| USB Type-C | Qualcomm PM7250B | Y | Dual role, USB2 only (via pmic-glink) |
| Haptics | Awinic AW86224 | N | Datasheet exists, basically same family as aw86927 (which has an upstream driver) minus some registers |
| Camera flash | Qualcomm PM7350C | Y | Two of them, even! Both white, no amber. |
| Battery | Qualcomm PM.. one of them | Y | ADSP battmgr, it just works, profile/calibration already loaded |
| Speaker amp | Awinic AW88261 | Y | Both top and bottom speakers use these amps. On the senary MI2S. |
| Headset/Mic amp | Qualcomm WCD9375 | P | Onboard mics work (top and bottom), USB-C analog pending (need driver changes) |
| USB-C analog audio | OnSemi FSA4480 | P | Need to route audio to it from the WCD |
| Camera PMIC | Will Semicon WL2864C | Y | Driver copied from downstream, will clean up and submit |
| Camera | OmniVision OV50A | N | Main. Needs a driver, some cursed reference available |
| Smasnug S5KJN1 + AK7375 VCM | Y | Ultrawide. Driver available upstream already, yay! | |
| GalaxyCore GC02M1B | N | Depth. Useless, not even worth bothering with unless for a lo-fi mode | |
| OmniVision OV32B40 | N | Front. Needs a driver, some cursed reference available | |
| Accelerometer/Gyroscope (IMU) | InvenSense ICM-42602 | Y | Sensor hub support works |
| Magnetometer | MEMSIC MMC5603NJ | Y | |
| Light/Proximity Sensor (ALS/PS) | Sensortek STK33562 | Y | |
| Cap.Touch/SAR Sensor | Semtech SX9375IULTRT | N | |
| Fingerprint sensor | N | ||
| NFC | STMicroelectronics ST21NFCJ | N | Driver exists upstream but no one used it ever?? TODO |