Jump to content

Lynx R1 (lynx-r1)

From postmarketOS Wiki
Revision as of 17:36, 10 October 2024 by Medusa (talk | contribs) (Add Lynx R1 headset)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Lynx R1
.
.
Manufacturer Lynx
Name R1
Codename lynx-r1
Released 2023
Type headset
Hardware
Chipset Qualcomm Snapdragon XR2 (SM8250)
CPU Octa-core (1x2.84 GHz Cortex-A77 & 3x2.42 GHz Cortex-A77 & 4x1.80 GHz Cortex-A55)
GPU Adreno 650
Display 3200x1600 (1600x1600 per eye)
Storage 128 GB UFS 3.1
Memory 6 GB LPDDR5
Architecture aarch64
Software
Original software Android
Original version 12
postmarketOS
Category testing
Pre-built images no
Mainline no
Features
Flashing
No data
USB Networking
No data
Internal storage
No data
SD card
No data
Battery
No data
Screen
No data
Touchscreen
No data
Multimedia
3D Acceleration
No data
Audio
No data
Camera
No data
Camera Flash
No data
Connectivity
WiFi
No data
Bluetooth
No data
GPS
No data
NFC
No data
Modem
Calls
No data
SMS
No data
Mobile data
No data
Miscellaneous
FDE
No data
USB OTG
No data
HDMI/DP
No data
Sensors
Accelerometer
No data
Magnetometer
No data
Ambient Light
No data
Proximity
No data
Hall Effect
No data
Haptics
No data
Barometer
No data


Contributors

Users owning this device

  • Caleb (Notes: With JTAG breakout)
  • Medusa (Notes: Year of spatial Linux desktop???)


Table of hardware

Component Model Notes
SoC Qualcomm SM8250 Snapdragon XR2
UFS WDC SDINFDK4-128G WD iNAND MC EU521, 128GB UFS 3.1
SD reader ? There's a slot on the left side of the device
Displays JDI/BOE LPM021M528C Unsure how they're connected yet, waiting for vendor sources
Wi-Fi Qualcomm QCA6390 PCI-E
IR Cameras OmniVision OV9282 (x2)
Passtrough cameras OmniVision OV4689 (x2)
Magnetometer Bosch BMM150
Accel/gyro TDK ICM4X6XX

Partition layout

ALIGN_TO_128K_1 -> /dev/block/sdd1
ALIGN_TO_128K_2 -> /dev/block/sdf1
abl_a -> /dev/block/sde8
abl_b -> /dev/block/sde31
aop_a -> /dev/block/sde1
aop_b -> /dev/block/sde24
apdp -> /dev/block/sde49
bluetooth_a -> /dev/block/sde5
bluetooth_b -> /dev/block/sde28
boot_a -> /dev/block/sde11
boot_b -> /dev/block/sde34
cdt -> /dev/block/sdd2
cmnlib64_a -> /dev/block/sde13
cmnlib64_b -> /dev/block/sde36
cmnlib_a -> /dev/block/sde12
cmnlib_b -> /dev/block/sde35
ddr -> /dev/block/sdd3
devcfg_a -> /dev/block/sde14
devcfg_b -> /dev/block/sde37
devinfo -> /dev/block/sde47
dip -> /dev/block/sde48
dsp_a -> /dev/block/sde9
dsp_b -> /dev/block/sde32
dtbo_a -> /dev/block/sde17
dtbo_b -> /dev/block/sde40
featenabler_a -> /dev/block/sde22
featenabler_b -> /dev/block/sde45
frp -> /dev/block/sda5
fsc -> /dev/block/sdf5
fsg -> /dev/block/sdf4
hyp_a -> /dev/block/sde3
hyp_b -> /dev/block/sde26
imagefv_a -> /dev/block/sde23
imagefv_b -> /dev/block/sde46
keymaster_a -> /dev/block/sde10
keymaster_b -> /dev/block/sde33
keystore -> /dev/block/sda4
limits -> /dev/block/sde52
limits-cdsp -> /dev/block/sde53
logdump -> /dev/block/sde55
logfs -> /dev/block/sde54
mdm1m9kefs1 -> /dev/block/sdf7
mdm1m9kefs2 -> /dev/block/sdf8
mdm1m9kefs3 -> /dev/block/sdf6
mdm1m9kefsc -> /dev/block/sdf9
mdmddr -> /dev/block/sdd4
mdtp_a -> /dev/block/sde7
mdtp_b -> /dev/block/sde30
mdtpsecapp_a -> /dev/block/sde6
mdtpsecapp_b -> /dev/block/sde29
metadata -> /dev/block/sda11
misc -> /dev/block/sda3
modem_a -> /dev/block/sde4
modem_b -> /dev/block/sde27
modemst1 -> /dev/block/sdf2
modemst2 -> /dev/block/sdf3
msadp -> /dev/block/sde50
multiimgoem_a -> /dev/block/sde19
multiimgoem_b -> /dev/block/sde42
multiimgqti_a -> /dev/block/sde20
multiimgqti_b -> /dev/block/sde43
persist -> /dev/block/sda2
qupfw_a -> /dev/block/sde15
qupfw_b -> /dev/block/sde38
rawdump -> /dev/block/sda14
recovery_a -> /dev/block/sda7
recovery_b -> /dev/block/sda8
sda -> /dev/block/sda
sdb -> /dev/block/sdb
sdc -> /dev/block/sdc
sdd -> /dev/block/sdd
sde -> /dev/block/sde
sdf -> /dev/block/sdf
secdata -> /dev/block/sde58
spunvm -> /dev/block/sde51
ssd -> /dev/block/sda1
storsec -> /dev/block/sde56
super -> /dev/block/sda6
tz_a -> /dev/block/sde2
tz_b -> /dev/block/sde25
uefisecapp_a -> /dev/block/sde18
uefisecapp_b -> /dev/block/sde41
uefivarstore -> /dev/block/sde57
userdata -> /dev/block/sda15
vbmeta_a -> /dev/block/sde16
vbmeta_b -> /dev/block/sde39
vbmeta_system_a -> /dev/block/sda9
vbmeta_system_b -> /dev/block/sda10
vm-data -> /dev/block/sde60
vm-keystore -> /dev/block/sde59
vm-linux_a -> /dev/block/sde21
vm-linux_b -> /dev/block/sde44
vm-system_a -> /dev/block/sda12
vm-system_b -> /dev/block/sda13
xbl_a -> /dev/block/sdb1
xbl_b -> /dev/block/sdc1
xbl_config_a -> /dev/block/sdb2
xbl_config_b -> /dev/block/sdc2

Rooting, running ADB as root

  1. Download stock firmware from https://portal.lynx-r.com/downloads/firmware/lynx-r-1/
  2. Download OTA extractor from https://github.com/StevenDoesStuffs/android-ota-extractor
  3. Download Magisk from https://github.com/topjohnwu/Magisk/releases
  4. Download/build https://github.com/tiann/adb_root

---

  1. Install Magisk on the headset using ADB, copy boot.img to internal storage and patch it.
  2. Download patched boot.img
  3. Flash it using Qualcomm EDL mode
  4. After flashing it, copy adb_root Magisk module to internal storage and install it.
  5. You may use ADB as root now (to dump partitions etc). This module breaks scrcpy.

Flashing

  1. Download firmware package from Lynx: https://portal.lynx-r.com/api/public/ota/firmware/download/latest-qfil
  2. Download/build QDL tool: https://github.com/linux-msm/qdl
  3. Reboot to EDL using `adb reboot edl`
  4. Flash the headset using the following command: ./qdl --storage ufs --include ./ ./prog_firehose_ddr.elf ./rawprogram0.xml ./patch0.xml ./rawprogram1.xml ./patch1.xml ./rawprogram2.xml ./patch2.xml ./rawprogram3.xml ./patch3.xml ./rawprogram4.xml ./patch4.xml ./rawprogram5.xml ./patch5.xml ./rawprogram_unsparse0_fullupgrade.xml
  5. Reboot the device by holding the power button for ~15 seconds.

See also