Jump to content

Purism Librem5 Devkit (purism-librem5dev)

From postmarketOS Wiki
Purism Librem 5 Devkit
Manufacturer Purism
Name Librem 5 Devkit
Codename purism-librem5dev
Released 2018
Hardware
Chipset Emcraft NXP i.MX8M
CPU NXP i.MX8M
GPU Vivante GC7000Lite
Display 1440x720
Storage 32 GB EMMC
Memory 3 GB
Architecture aarch64
Software
Original software PureOS
postmarketOS
Category testing
Pre-built images no
Features
Flashing
No data
USB Networking
No data
Internal storage
No data
SD card
No data
Battery
No data
Screen
Works
Touchscreen
Works
Multimedia
3D Acceleration
Partial
Audio
Partial
Camera
No data
Camera Flash
No data
Connectivity
WiFi
Partial
Bluetooth
Partial
GPS
Works
NFC
No data
Modem
Calls
No data
SMS
No data
Mobile data
No data
Miscellaneous
FDE
No data
USB OTG
Partial
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

How to enter flash mode

The devkit has a switch on the same side as the reboot button, wifi switch, camera switch, and modem switch. Move it to the "USB Mode" position and hit the reboot button next to it in order to put the device into 'flash' mode.

Installation

Flashing

pmbootstrap now has support for flashing the devkit with the flasher command. After running pmbootstrap install to generate a rootfs, the devkit can be flashed by putting it into 'USB mode' and executing pmbootstrap flasher flash_rootfs

Once the image has been flashed, place the device into emmc mode and hit the reboot button to start booting postmarketOS. The first boot can take a few minutes as it resizes the rootfs to fill all available space on the emmc disk.

Graphics

The Vivante GPU in the devkit is not fully currently supported upstream in Mesa. In order to achieve preliminary 3D acceleration on this device, you can use the 'librem5_playground' branch in craftyguy's repo. This builds a Purism branch of Mesa with not-yet-upstream patches.

The device-librem5-devkit package does not include this newer Mesa as a dependency.

If you select a GUI during pmbootstrap init and have this pmaports branch checked out under the aports directory, then the main Mesa packages (excluding mesa-dri-*) will automatically built into the rootfs image. The following mesa-dri-* packages will need to be copied to device manually and installed. To copy the Mesa packages built by this branch (ignoring mesa-dev and swrast/osmesa) to the device:

$ scp /home/YOU/.local/var/pmbootstrap-out/packages/aarch64/mesa-19.0.0-r999.apk \
    /home/YOU/.local/var/pmbootstrap-out/packages/aarch64/mesa-dri-etnaviv-19.0.0-r999.apk \
    /home/YOU/.local/var/pmbootstrap-out/packages/aarch64/mesa-dri-imx-19.0.0-r999.apk \
    /home/YOU/.local/var/pmbootstrap-out/packages/aarch64/mesa-egl-19.0.0-r999.apk \
    /home/YOU/.local/var/pmbootstrap-out/packages/aarch64/mesa-gl-19.0.0-r999.apk \
    /home/YOU/.local/var/pmbootstrap-out/packages/aarch64/mesa-glapi-19.0.0-r999.apk \
    /home/YOU/.local/var/pmbootstrap-out/packages/aarch64/mesa-gles-19.0.0-r999.apk \
    user@<IP OF DEVKIT>:~/

These can be easily installed/upgraded by running the following when logged into the device:

$ sudo apk add mesa*.apk

Note: The Mesa package in this branch disables all other GPU drivers to help reduce compile time, and may also be buggy since it's based off of the Mesa master branch, so it's not likely to be merged into mainline pmaports.

Todo

  • Add uuu as a supported 'flasher' in pmbootstrap
    • Include a uuu script for flashing rootfs. Note: It will likely need to be a template, with pmb injecting path to rootfs and u-boot.
  • Bring up cellular modem
  • Resolve issues with Wifi
    • Interface shows up in OS, and wpa_supplicant seems to connect(?), but no IP.
  • Resolve issues with Bluetooth
    • Bluetooth can be started by loading the rsi_91x module with dev_oper_mode=14 but this disables Wifi station/client mode and enables Wifi AP mode. It doesn't seem to work with dev_oper_mode=13, which enables Wifi client mode.
  • Current dts enables usb host but doesn't enable LCD display
    • Some of us are not lucky enough to have a working LCD display.. so the default uses a dts that enables usb host mode for attaching keyboard/mouse for interacting with an HDMI display connected to the devkit. Others are lucky enough to have a working LCD display. There is no known dts file that includes both LCD display enabling magic and usb host enabling magic. This would be ideal.
  • Test/enable camera
  • Test/enable ambient light sensor


See also