There is an updated pull request by jjsullivan5196 against master on the void-packages repository https://github.com/jjsullivan5196/void-packages pinephone-qol https://github.com/void-linux/void-packages/pull/25084 pinephone: add support for modem setup and audio routing. This pull adds the necessary components for 4G modem usage, with the following use-cases in mind: - Configure audio setup to and from modem - Make and receive calls - Send and read SMS - Use mobile broadband/cellular data - Wake-on-Modem (for calls and texts) For now I've tested this with ModemManager+NetworkManager, but this also provides the groundwork for environments that use `ofono` (or just plain AT commands with `atinout` or `screen`, if you feel clever :^) ) To get started, you first need to run `pinephone-modem-setup` once as root to do the initial modem configuration. (chances are postmarketOS already did this if you booted the phone once, but this might need to be done again incase of potential data loss) Some use-cases might require further configuration of software (eg specific to NetworkManager) but the setup script should do most of the needed work. Make sure modem is powered up by running `echo 1 > /sys/class/modem-power/modem-power/device/powered_blocking` Some examples of usage that I've tested below: Read sms with `mmcli` ```sh $ mmcli -s '/org/freedesktop/ModemManager1/SMS/2' ----------------------------------- Content | number: '+5555555555' | text: 'Test' ----------------------------------- Properties | PDU type: 'deliver' | state: 'received' | storage: 'me' | smsc: '+919810051829' | timestamp: '160808142935+05' ``` Sample script for answering calls, using ModemManager dbus interface. Audio is setup thru `alsaucm` ```sh #!/bin/bash MM_IFACE="org.freedesktop.ModemManager1" MATCH_CALLS="type='signal',sender='${MM_IFACE}',interface='${MM_IFACE}.Modem.Voice',member='CallAdded'" do_accept() { while read TYPE TIME SENDER HEADER do if [[ "$HEADER" = *"Modem.Voice"* ]]; then read TYPE _P OBJ OBJ=$(echo "${OBJ}" | tr -d '"') echo "Pickup ${OBJ}" alsaucm \ open PinePhone \ set _verb 'Voice Call' \ set _enadev 'Mic' \ set _enadev 'Earpiece' dbus-send \ --system \ --dest="${MM_IFACE}" \ --print-reply \ "${OBJ}" \ "${MM_IFACE}.Call.Accept" else read fi done } dbus-monitor --system "${MATCH_CALLS}" | do_accept ``` Add a NetworkManager connection for LTE (sub `` for your carrier's data APN) ```sh $ nmcli c add type gsm ifname '*' con-name LTE apn ``` For Wake-on-Modem: I tested by doing `loginctl suspend` from a sway session, then calling the phone. It wakes up within 2 rings. fwiw: these examples are only good for making sure the hardware/software interface works. More work still needs to be done to get some telephony front-end software in the repo, like #24538 Sxmo also should work out-of-the box with the NetworkManager+ModemManager pair https://git.sr.ht/~mil/sxmo-docs For any concerns about the `COPYING` file, the [original author approves](https://matrix.to/#/!ToPtLQdvveNEbXcHqE:fam-ribbers.com/$YEfAo9NI3WPApA1QbhmQrhwizjmlYXnLkMjby4PU7z4?via=matrix.org&via=feneas.org&via=kde.org). A patch file from https://github.com/void-linux/void-packages/pull/25084.patch is attached