Jump to content

Nothing CMF Phone 1 (nothing-tetris)

From postmarketOS Wiki
Nothing CMF Phone 1
A CMF Phone 1 phone.
A CMF Phone 1 phone.
Manufacturer Nothing
Name CMF Phone 1
Codename nothing-tetris
Model A015
Released 2024
Type handset
Hardware
Chipset MediaTek MT6878
CPU 4x 2.5 GHz ARM Cortex-A78
4x ARM Cortex-A55
GPU ARM Mali-G615 MC2
Display 1080x2400 AMOLED
Storage 128/256GB
Memory 6GB (only in some markets)/8GB
Architecture aarch64
Software
Original software
The software and version the device was shipped with.
Android (Nothing OS) 14
Extended version
The most recent supported version from the manufacturer.
Android (Nothing OS)
FOSS bootloader partial
postmarketOS
Category testing
Mainline
Instead of a Linux kernel fork, it is possible to run (Close to) Mainline.
yes
pmOS kernel
The kernel version that runs on the device's port.
6.17
Unixbench score
Unixbench Whetstone/Dhrystone score. See Unixbench.
10,090.4
Features
Flashing
It is possible to flash the device with pmbootstrap flasher.
Broken
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
SD card
Also includes other external storage cards
Broken
Battery
Charging and battery level reporting works
Broken
Screen
Display works. Ideally with sleep mode and brightness control.
Broken
Touchscreen
Broken
Multimedia
3D Acceleration
Broken
Audio
Audio playback, microphone, headset and buttons.
Broken
Camera
Broken
Camera Flash
Broken
Connectivity
WiFi
Broken
Bluetooth
Broken
GPS
Broken
Modem
Calls
Broken
SMS
Broken
Mobile data
Broken
Miscellaneous
FDE
Full disk encryption and unlocking with unl0kr.
Broken
USB OTG
USB On-The-Go or USB-C Role switching
Broken
Sensors
Accelerometer
Auto screen rotation works in desktops e.g. Phosh or Plasma Mobile
Broken
Ambient Light
Broken
Haptics
Broken
Power Sensor
Sensor to monitor current, voltage and power. Not fuel gauge!
Broken
U-Boot
Primary Bootloader
It is possible to replace stock bootloader with U-Boot.
Broken
Secondary Bootloader
It is possible to chainload U-Boot from stock bootloader.
Works
Mainline
Latest versions of U-Boot are not broken and it is possible to use them.
Broken
Internal Storage
It is possible to boot from internal storage (e.g. eMMC or UFS).
Broken
SD card
It is possible to boot from SD card.
Broken
USB Host
It is possible to boot from a USB storage or connect a keyboard.
Broken
USB Peripheral
It is possible to use device as a peripheral in U-Boot, e.g. for fastboot mode.
Broken
Display
Broken
Keyboard
Broken
Buttons
It is possible to navigate in boot menu or grub with volume and power buttons.
Broken

Contributors

  • BotchedRPR
  • AKArien

Users owning this device


How to enter flash mode

  • Boot menu: Hold Volume Up and Power until you see a "NOTHING PHONE INFO" boot menu.
  • Fastboot mode: Enter the boot menu, select fastboot with Volume Up and enter with Volume Down
  • Recovery mode: Enter the boot menu, select recovery with Volume Up and enter with Volume Down

Installation

This device is not packaged in pmaports yet. You will be using a fork until this changes (pmaports!6985)

1. Make sure you have pmbootstrap installed, and that you have ran the init command at least once.

2. Open your pmaports directory (if you forgot, you can run pmbootstrap config aports)

3. Add the remote with this device's packages, pull, and checkout, as such:

# git remote add tetris https://gitlab.postmarketos.org/BotchedRPR/pmaports.git
# git pull tetris
<...>
# git checkout tetris
HEAD is now at 25703060f6 device-nothing-tetris: new package

4. Now, you can select the device in pmbootstrap and run install as normal.

Flashing

MT6878 devices cannot boot mainline Linux without a shim bootloader. We will be using uniLoader (unfortunately, a fork of it, hopefully these changes will make it upstream soon)

1. Clone and prepare the uniLoader fork, as such:

# git clone https://github.com/BotchedRPR/uniLoader
<...>
# cd uniLoader
# ARCH=aarch64 CROSS_COMPILE=aarch64-linux-gnu- make tetris_defconfig
<...>

2. Copy over the device binaries, to include them in the uniLoader binary, and build uniLoader, as such:

# pmbootstrap export
<...>
# cp /tmp/postmarketOS-export/vmlinuz blob/Image
# cp /tmp/postmarketOS-export/initramfs blob/ramdisk
# cp <pmbootstrap_work_dir>/chroot_rootfs_nothing-tetris/boot/mt6878-nothing-tetris.dtb blob/dtb
# ARCH=aarch64 CROSS_COMPILE=aarch64-linux-gnu- make -j$(nproc --all)
<...>

If you forgot your <pmbootstrap_work_dir> path, you can grab it using pmbootstrap config work.

3. Finally, prepare the boot image and flash it to the device.

# mkbootimg --kernel uniLoader.lz4 --header 4 --out boot.pmos-tetris.img
# fastboot flash boot boot.pmos-tetris.img reboot

Device quirks

  • Fastboot appears to not work properly if the device is plugged into the host when entering fastboot mode. In this case, any fastboot command will halt seemingly forever and without action. A command can still be executed by unplugging the device, issuing the command, and then reconnecting the cable; or simply by rebooting to fastboot again without a cable connected.
  • UART is not enabled by default. To enable it, you can run:
fastboot oem p2u on

UART

After enabling UART from fastboot, it can be accessed on the motherboard, close to the camera (requires disassembly). The pins operate at 1,7V.

UART pads with wires soldered to them. The top pad is RX and the bottom pad is TX. They are located slightly to the right and below the camera on the motherboard.
UART pads with wires soldered to them.

See also