Skip to content

0.7.4: Dirty Patching (let's try again...)

Latest
Compare
Choose a tag to compare
@Biktorgj Biktorgj released this 01 Mar 07:05
· 9 commits to kirkstone since this release
c6d304b

CHANGELOG: 0.7.4

Big, enormous thank you to all the people who participate in the development of this firmware, be it by contributing with code, documentation, donations or testing and reporting issues, this firmware gets better on each release thanks to your help and feedback!

Just a small bug fix release over 0.7.3 to remove the annoying SMS on boot and fix the help command (sorry for that!)

New:

  • Allow QMI message debugging of specific services via chat (for some service, command names too)
  • QMI message debugging now splits the message in parts for easier reading (somewhat similar to ModemManager)
  • OpenQTI now has its own small internal QMI client to be able to do a bunch of cool things instead of sniffing through the usb port
  • Internal WDS (Wireless Data Service) Client (in BETA!, expect problems)
    • NOTE: This function may waste more battery
    • Allows you to connect to the internet directly from the modem's userspace (only IPv4 for now, sorry!)
    • Allows for always on networking in the modem no matter if your PinePhone is sleeping
    • Allows for routed networking + firewall in the modem itself
    • Control this feature with the chat (functionality, apn, username, password and auth mode):
      • enable internal net: Enables internal networking support (reboot required)
      • disable internal net: Disables internal networking support (reboot required)
      • ifup: When internal networking is enabled, this will attempt to connect a data session
      • ifdown: Will shutdown an active data session
      • set internal network apn APN_NAME: Configures the APN
      • set internal network apn user USERNAME: If the APN requires authentication
      • set internal network apn pass PASSWORD: If the APN requires authentication
      • set internal network apn auth method [none|pap|chap|auto]: If the APN requires authentication
    • Be ready to fight your network connections on the Pinephone, as the host is probably not ready to have another network active
    • Depending on your carrier, you might get away with having two simultaenous connections, one directly at the usb port managed through ModemManager, and another one from the modem itself. If it doesn't work (which was my case with both my carriers) try disabling networking in Phosh/ModemManager and try again
  • Internal NAS (Network Access Service) Client
    • Replaces the old and buggy network tracking code
    • Support for tracking current and past connected cell IDs, location areas
    • Supports OpenCellid Database integration
    • Support for automatic baseband emergency shut down if the modem connects to an unknown cell ID or if the Cell ID doesn't match the expected Location Area Code (it will literally kill itself and will need a reboot to make it work again)*
    • Support for exporting of all the available information about the network as CSV files
    • Service capability change tracking (i.e. service downgrade from LTE to GSM)
    • Choose what you want to know: Every cell change? Every new cell the modem connects to? Only when service is downgraded? Nothing except if the modem is going to shut down? Use the chat to configure it to your needs
    • If your life depends on a feature like this, you're still safer not using a phone. It's not perfect and it will still need more work before it is reliable
    • Chat controls:
      • enable tracking: Turns the feature on
      • disable tracking: Turns the feature off
      • signal tracking mode [0-3]: 0: Standalone learning, 1: Standalone strict (auto poweroff), 2:Opencellid+standalone learning, 3:Opencellid+standalone strict (auto poweroff if cell is not in opencellid and wasn't previously connected)
      • signal tracking cell notifications [none|new|all]: Configure when to receive SMS notifications: Never, only when connected to previously unknown cells or everytime you change cells (will drain your battery faster because it will be waking up the Pinephone a lot)
      • enable network downgrade notification: Will send a SMS if the network goes from a service type to a lower one (i.e. LTE to WCDMA, or LTE to GSM, or WCDMA to GSM)
      • disable network downgrade notification: Will stop downgrade notification messages
      • If signal tracking is enabled, you will still receive a message when there's a capability change (For example, Call service is detached, data service is detached/reattached, or there's a change in the supported network types)
  • Internal Voice Service client (not really used yet, we'll leave that one out for this version)
  • Internal DMS (Device Management Service) client:
    • Automatically retrieves firmware info and device status from the modem
    • Controls SIM unlocking state to defer other service startup (time, network tracking, scheduler)
  • Scheduler now periodically checks for available space and automatically cleans up if space is critically low (for those of you running the modem in debug mode all the time with persist disabled, this should prevent it from crashing due to no free RAM)
  • Configuration support for the List All Messages bypass in ModemManager (stuck message recovery on boot)
  • Added to recipes, but disabled from this build: Speech to text support. It doesn't really work that well and would only be useful for english speakers, but you can build it by setting some flags. Allows to automatically generate transcripts from recordings
  • Updated Yocto to 4.0.8
  • Want to run something at boot? Create a script called .autostart in /persist, and it will run from init in next boot!
  • Find the easter egg :P

Fixes:

  • Clear DND task after it has run
  • Clear force-notify task after it has run
  • Fixes mem leaks from unfreed buffers in different parts of openqti
  • Internal call now sets the cpu to performance mode so TTS engine isn't slow as a dog converting text to speech, goes back to powersave on hangup
  • Automatic fallback if user data partition doesn't exist (for modems without a user data partition)
  • Automatic search of the modem partition in case the bootloader doesn't provide one
  • Fix openqti crash when a 159 character message ended up overflowing when converted to GSM7 due to special characters
  • 'help' command is now sorted by category instead of list order
  • Fix modem not waking up the host correctly to a fake message

(*) OpenCellid: New signal tracking functionality has 5 operating modes:

  1. Off
  2. Learning mode using only the data it can gather from the network itself
  3. Strict mode using the data it collected in previous mode
  4. Learning mode using the data it can get from the network + the OpenCellid database
  5. Strict mode using only the previously collected data and the OpenCellid database.

When running in strict mode, the baseband will kill itself as soon as it connects to an unknown cell id, so don't shoot yourself in the foot. If you aren't going to automate opencellid database uploading, start by setting it to learning mode, so the modem builds a cache of known cells around your area, before setting it to strict mode. Once the baseband is killed, the only thing that will still work is ADB access until a reboot, so it will make it hard for you to change the settings back (unless you wipe the config file via adb (adb shell rm /persist/openqti.conf)

LIMITATIONS:

  • You need ADB enabled so you can upload database files to the modem
  • Due to the polling interval, the modem may stay connected up to 20 seconds to the network before being cut off
  • When in strict mode, if the modem connects to a cell it doesn't know about it will send you a message, wait 10 seconds to allow the host to get that message, and then it will stop the baseband firmware entirely. The userspace will stay running in case you want to retrieve some logs from it, but after that you'll have to reboot the modem via adb or the kill switch & EG25-Manager
  • Since the OpenCellid database takes 4Gb uncompressed, I've set up a small page you can use to get the relevant data for your carrier. Please check here for a sample script you can automate. If you want to host your own database, I've set up a small repo with the tools you'll need

Compatibility:

  • Pinephone
  • Pinephone Pro
  • Quectel EG25 based MiniPCIe cards (make sure you enable USB audio if you want to make a call)
  • (With some help) Simcom SIM7600 (you'll have to use USB audio, and it will think it's a Quectel afterwards :))

Known issues

  • SMS Timestamps will be wrong if the modem can't manage to sync the date from the carrier. If this happens all messages will have a date of 2022-01-01 (+- timezone offset)
  • You tell me!

NOTES:

SHA512 Sum of the package file

SHA512: 60c2e66732d25c7e996b78cc67e65a157b6c0f1c8ed789f00aaceaf21631884ae483b5ee1e287801c683ffc87c978541f5634bcfae006dc49427186993911240 package.tar.gz

Inside the compressed tar file there's a file containing the SHA sums for the files in it.

Installation instructions:

  1. Get required tools: you need adb and fastboot
  2. Run the flashall script bundled in the package as root. If something fails, flash manually

After you flashed everything, the modem should come back automatically after 14-18 seconds.
If you want to go back to stock, check the recovery repo

WARNING: Make sure you have a recent enough baseband version before installing the firmware, or some things won't work as expected. You can check your current ADSP firmware by sending the command AT+QGMR when running stock, or AT+GETADSPVER when using this firmware. Below you can find the latest ADSP firmware blobs we have found (all of them will work):

ADSP Firmware:

Depending on your carrier, some firmware versions will work better than others. You can check your current ADSP firmware version by sending the "AT+QGMR" AT command. If in doubt, version 01.002.01.002 is the default if you used the recovery repo. I've been using version 003 for months without issues (and improvements in data handling) but some users have reported problems making VoLTE calls with it, so pick whatever works best for you (or don't change it at all if it worked fine before)

Flashing it:

  1. Open a root terminal and run: echo -ne "AT+QFASTBOOT\r" > /dev/ttyUSB2 to enter fastboot mode
  2. Run fastboot flash modem NON-HLOS.ubi && fastboot reboot

Something went wrong?

Feel free to check the troubleshooting section. If you don't manage to fix it, feel free to open an issue and I'll do my best to help you out

This release is a flashable package based on the following repos:

Have fun and stay safe everyone