Skip to content

Releases: the-modem-distro/pinephone_modem_sdk

[Test build] Try not to be so trigger happy

26 Jul 05:12
Compare
Choose a tag to compare

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

Before you begin

Please, take a minute to get a copy of the stock firmware here (https://github.com/Biktorgj/quectel_eg25_recovery), and carefully read the README. If you don't know understand what it says, or don't know how to recover the firmware in case something goes wrong, avoid touching your modem

CHANGES FROM PREVIOUS RELEASE

  • Track service 0x1a to guess if ModemManager died instead of controlling timings

Installation instructions:

  1. Get required tools: you need adb and fastboot

  2. Grab a copy of the firmware, and, optionally, a recovery firmware (https://github.com/Biktorgj/quectel_eg25_recovery)

  3. Run the flashall script bundled in the package. If something fails, flash manually

  4. After you flashed everything, you can run 'fastboot reboot' (you might have to do that twice) and wait for it to come back.

Have fun!

[Test build] Tidy up everything

25 Jul 07:50
Compare
Choose a tag to compare
Pre-release

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

Before you begin

Please, take a minute to get a copy of the stock firmware here (https://github.com/Biktorgj/quectel_eg25_recovery), and carefully read the README. If you don't know understand what it says, or don't know how to recover the firmware in case something goes wrong, avoid touching your modem

CHANGES FROM PREVIOUS RELEASE

  • Repair recovery image so it actually turns on USB
  • Revert: Allow to close-open the file descriptors in rmnet proxy (improvement related to #16)
  • Track client releases along register requests, and make sure we kill everything if the host misbehaves (#9)
  • Tidy it up a bit

Installation instructions:

  1. Get required tools: you need adb and fastboot

  2. Grab a copy of the firmware, and, optionally, a recovery firmware (https://github.com/Biktorgj/quectel_eg25_recovery)

  3. Run the flashall script bundled in the package. If something fails, flash manually

  4. After you flashed everything, you can run 'fastboot reboot' (you might have to do that twice) and wait for it to come back.

Have fun!

[Test build] Better handling of misbehaving childs

24 Jul 08:37
Compare
Choose a tag to compare

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

Before you begin

Please, take a minute to get a copy of the stock firmware here (https://github.com/Biktorgj/quectel_eg25_recovery), and carefully read the README. If you don't know understand what it says, or don't know how to recover the firmware in case something goes wrong, avoid touching your modem

CHANGES FROM PREVIOUS RELEASE

  • Allow to close-open the file descriptors in rmnet proxy (improvement related to #16)
  • Track client releases along register requests, and make sure we kill everything if the host misbehaves (#9)

Installation instructions:

  1. Get required tools: you need adb and fastboot

  2. Grab a copy of the firmware, and, optionally, a recovery firmware (https://github.com/Biktorgj/quectel_eg25_recovery)

  3. Run the flashall script bundled in the package. If something fails, flash manually

  4. After you flashed everything, you can run 'fastboot reboot' (you might have to do that twice) and wait for it to come back.

Have fun!

[Test build] CPU hogging fixes

23 Jul 05:47
Compare
Choose a tag to compare
Pre-release

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

Before you begin

Please, take a minute to get a copy of the stock firmware here (https://github.com/Biktorgj/quectel_eg25_recovery), and carefully read the README. If you don't know understand what it says, or don't know how to recover the firmware in case something goes wrong, avoid touching your modem

CHANGES FROM PREVIOUS RELEASE

  • Hopefully fixed the 100% CPU usage in OpenQTI after USB reset (#16)
  • Hopefully fixed the ADSP client saturation issue when there's multiple bad disconnects from USB (#9)

Installation instructions:

  1. Get required tools: you need adb and fastboot

  2. Grab a copy of the firmware, and, optionally, a recovery firmware (https://github.com/Biktorgj/quectel_eg25_recovery)

  3. Run the flashall script bundled in the package. If something fails, flash manually

  4. After you flashed everything, you can run 'fastboot reboot' (you might have to do that twice) and wait for it to come back.

Have fun!

Yocto 3.3.1 update

22 Jun 04:36
Compare
Choose a tag to compare

Long time no update!
Just a small update, nothing fancy. Updated Yocto to 3.3.1, and added a command to enable USB audio. That is untested as I really don't know how to check if it works or not, but USB side it reports as enabled.

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

Before you begin

Please, take a minute to get a copy of the stock firmware here (https://github.com/Biktorgj/quectel_eg25_recovery), and carefully read the README. If you don't know understand what it says, or don't know how to recover the firmware in case something goes wrong, avoid touching your modem

CHANGES FROM PREVIOUS RELEASE

  • Includes the sampling rate patches for the adventurous
  • Initial USB audio support

Installation instructions:

  1. Get required tools: you need adb and fastboot

  2. Grab a copy of the firmware, and, optionally, a recovery firmware (https://github.com/Biktorgj/quectel_eg25_recovery)

  3. Run the flashall script bundled in the package. If something fails, flash manually

  4. After you flashed everything, you can run 'fastboot reboot' (you might have to do that twice) and wait for it to come back.

Have fun!

[TESTING] Hello VoLTE HD!

24 Apr 06:40
Compare
Choose a tag to compare

WARNING: This is just a test release. It might work perfectly fine or may render your OS install unusable

This release includes a mobian kernel package. If you're running another distro and want to try this you'll have to apply the provided patch and build your own kernel.

You'll need to use the provided ALSA and eg25manager config files or audio will sound distorted.

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

Before you begin

Please, take a minute to get a copy of the stock firmware here (https://github.com/Biktorgj/quectel_eg25_recovery), and carefully read the README. If you don't know understand what it says, or don't know how to recover the firmware in case something goes wrong, avoid touching your modem

CHANGES FROM PREVIOUS RELEASE

  • Testing: Selectable sampling rate from the modem.
    Defaults to 8KHz for compatibility with all distros, but can set to 16KHz or 48KHz. This allows for audio quality to not be downgraded to 8KHz when doing VoLTE HD calls. Release contains a mobian kernel, custom config files, a full modem package and a diff in case you want to patch your distro. Some AT Commands allow you to set the sampling rate you want: AT+EN_PCM8K / AT+EN_PCM16K / AT+EN_PCM48K

Installation instructions:

  1. Get required tools: you need adb and fastboot
  2. Grab a copy of the firmware, and, optionally, a recovery firmware (https://github.com/Biktorgj/quectel_eg25_recovery)
  3. With the modem active, jump to fastboot mode:
    • If you don't have ADB enabled, enter the following command in /dev/ttyS2 (minicom -D /dev/ttyS2):
      • AT+QFASTBOOT
    • If you already have ADB enabled:
      • adb reboot bootloader
  4. After a bit, if you run lsusb you should see the modem in fastboot mode:
  • Bus 003 Device 005: ID 18d1:d00d Google Inc. Xiaomi Mi/Redmi 2 (fastboot)
  1. Once in fastboot mode, first flash the unlocked bootloader:
    • fastboot flash aboot appsboot.mbn
    • After that fastboot reboot ; fastboot oem stay
  2. After flashing and rebooting to the bootloader the modem will say FAILED (remote: 'Waiting for orders!')
  3. Now you can flash everything:
  • fastboot flash boot boot-mdm9607.img
    • If you get an error flashing the kernel, run fastboot flash:raw : fastboot flash:raw boot boot-mdm9607.img
  • fastboot flash recovery recovery.img
  • fastboot flash system rootfs-mdm9607.ubi
  • fastboot flash recoveryfs recoveryfs.ubi
  1. After you flashed everything, you can run 'fastboot reboot' and wait for it to come back.
  2. Install the provided custom Mobian kernel, and copy the new configuration files in their respective directories (make backups before you do that!)
  • /usr/share/eg25-manager/* --> eg25 manager config files (so the application sets the modem firmware to 48K on boot)
  • /usr/share/alsa/ucm2/PinePhone/* --> ALSA Use case config files, to set the custom control allowing the pinephone sound driver to also work in 48KHz for calls
  1. Once you have done everything, reboot the PinePhone. Next boot you should see something like this in your kernel log:
  • [ 19.627561] ec25_sample_rate_get: Forced sample rate = 8000
  • [ 19.627814] ec25_sample_rate_set: Forced sample rate = 48000
  • [ 19.639821] ec25_sample_rate_get: Forced sample rate = 48000

If your carrier supports VoLTE HD and you make a call, you should see some noticeable difference in audio quality

If you want to go back, restore your original config files, and uninstall the provided kernel (sudo dpkg -r linux-image-5.10-sunxi64-btest51)
If you want to restore your firmware to stock, check the guide: https://github.com/Biktorgj/pinephone_modem_sdk/blob/hardknott/docs/RECOVERY.md

The reason for this is because if you reinstall the locked bootloader and some of the official files weren't flashed you might enter a reboot loop and you will need to open the phone and short the emergency recovery test points to get into EDL mode and use Qfirehose.

Have fun!

Yocto 3.3 Hardknott - Audio fixes

17 Apr 04:44
Compare
Choose a tag to compare

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

Before you begin

While I always thoroughfully check every single release, you might encounter problems I didn't find. Please, take a minute to get a copy of the stock firmware here (https://github.com/Biktorgj/quectel_eg25_recovery), and carefully read the README. If you don't know understand what it says, or don't know how to recover the firmware in case something goes wrong, avoid touching your modem

CHANGES FROM PREVIOUS RELEASE

  • Reworked the call status detection function. Now it looks for the right bits in the right places, and hopefully fixes audio in all case scenarios. Thanks a lot to @MFor1, @nextonoting and @Konstantinos Pol for their help!

Installation instructions:

  1. Get required tools: you need adb and fastboot
  2. Grab a copy of the firmware, and, optionally, a recovery firmware (https://github.com/Biktorgj/quectel_eg25_recovery)
  3. With the modem active, jump to fastboot mode:
    • If you don't have ADB enabled, enter the following command in /dev/ttyS2 (minicom -D /dev/ttyS2):
      • AT+QFASTBOOT
    • If you already have ADB enabled:
      • adb reboot bootloader
  4. After a bit, if you run lsusb you should see the modem in fastboot mode:
  • Bus 003 Device 005: ID 18d1:d00d Google Inc. Xiaomi Mi/Redmi 2 (fastboot)
  1. Once in fastboot mode, first flash the unlocked bootloader:
    • fastboot flash aboot appsboot.mbn
    • After that fastboot reboot ; fastboot oem stay
  2. After flashing and rebooting to the bootloader the modem will say FAILED (remote: 'Waiting for orders!')
  3. Now you can flash everything:
  • fastboot flash boot boot-mdm9607.img
    • If you get an error flashing the kernel, run fastboot flash:raw : fastboot flash:raw boot boot-mdm9607.img
  • fastboot flash recovery recovery.img
  • fastboot flash system rootfs-mdm9607.ubi
  • fastboot flash recoveryfs recoveryfs.ubi
  1. After you flashed everything, you can run 'fastboot reboot' and wait for it to come back.

If you want to return to stock, I would advise to keep the unlocked bootloader. It will do no harm, and it will give you more recovery functions in case you mess something up or something in the firmware breaks. It is compatible with Quectel's firmware, and the only thing it doesn't do is allowing automatic OTA updates. In case you want to recover the bootloader too, follow the following steps exactly

  • Grab the recovery image from my recovery repo: https://github.com/Biktorgj/quectel_eg25_recovery
  • Extract it to some folder and move to the update/ folder
  • One by one, flash all the image files, in this order:
    • fastboot flash system mdm9607-sysfs.ubi
    • fastboot flash recoveryfs mdm9607-recovery.ubi
    • fastboot flash boot mdm9607-boot.img
    • fastboot flash recovery mdm9607-boot.img
    • If all the files have been correctly flashed, only then, run fastboot flash aboot appsboot.mbn

The reason for this is because if you reinstall the locked bootloader and some of the official files weren't flashed you might enter a reboot loop and you will need to open the phone and short the emergency recovery test points to get into EDL mode and use Qfirehose.

Have fun!

Yocto 3.3 Hardknott

15 Apr 12:03
Compare
Choose a tag to compare

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

Before you begin

While I always thoroughfully check every single release, you might encounter problems I didn't find. Audio is still flaky. Please, take a minute to get a copy of the stock firmware here (https://github.com/Biktorgj/quectel_eg25_recovery), and carefully read the README. If you don't know understand what it says, or don't know how to recover the firmware in case something goes wrong, avoid touching your modem

CHANGES FROM PREVIOUS RELEASE

  • First public build based in Yocto 3.3 Hardknott
  • Finally fixed the console UART in the kernel for those of you with wires coming out of the phone
  • GPS is working now
  • Mostly Quectel-free bootloader
  • Small fixes to the kernel and cosmetic cleanups on the kernel logs (removed upper frequencies for the ACPU, cleaned up some pieces of the device tree, and removed some redundant kernel messages and things I've left forgotten mostly)
  • Reworked openqti so it's less probable for it to get stuck if you're pushing the modem hard
  • Some AT commands implemented:
    • AT+ADBON / AT+ADBOFF: Control ADB at runtime
    • AT+RESETUSB: Detach and reattach USB
    • AT+PWRDN: Shut down the modem
    • AT+QFASTBOOT: Reboot the modem to Fastboot Mode
    • AT+REBOOT_REC: Force reboot to recovery
  • Better boot times, from power to ready in 23 seconds including the time waiting for you in the bootloader
    • 3.3 seconds of kernel boot time
    • ADSP firmware ready in 17 seconds
    • Modem ready in 21 seconds from kernel boot

Installation instructions:

  1. Get required tools: you need adb and fastboot
  2. Grab a copy of the firmware, and, optionally, a recovery firmware (https://github.com/Biktorgj/quectel_eg25_recovery)
  3. With the modem active, jump to fastboot mode:
    • If you don't have ADB enabled, enter the following command in /dev/ttyS2 (minicom -D /dev/ttyS2):
      • AT+QFASTBOOT
    • If you already have ADB enabled:
      • adb shell reboot bootloader
  4. After a bit, if you run lsusb you should see the modem in fastboot mode:
  • Bus 003 Device 005: ID 18d1:d00d Google Inc. Xiaomi Mi/Redmi 2 (fastboot)
  1. Once in fastboot mode, first flash the unlocked bootloader:
    • fastboot flash aboot appsboot.mbn
    • After that fastboot reboot ; fastboot oem stay
  2. After flashing and rebooting to the bootloader the modem will say FAILED (remote: 'Waiting for orders!')
  3. Now you can flash everything:
  • fastboot flash boot boot-mdm9607.img
    • If you get an error flashing the kernel, run fastboot flash:raw : fastboot flash:raw boot boot-mdm9607.img
  • fastboot flash recovery recovery.img
  • fastboot flash system rootfs-mdm9607.ubi
  • fastboot flash recoveryfs recoveryfs.ubi
  1. After you flashed everything, you can run 'fastboot reboot' and wait for it to come back.

If you want to return to stock, I would advise to keep the unlocked bootloader. It will do no harm, and it will give you more recovery functions in case you mess something up or something in the firmware breaks. It is compatible with Quectel's firmware, and the only thing it doesn't do is allowing automatic OTA updates. In case you want to recover the bootloader too, follow the following steps exactly

  • Grab the recovery image from my recovery repo: https://github.com/Biktorgj/quectel_eg25_recovery
  • Extract it to some folder and move to the update/ folder
  • One by one, flash all the image files, in this order:
    • fastboot flash system mdm9607-sysfs.ubi
    • fastboot flash recoveryfs mdm9607-recovery.ubi
    • fastboot flash boot mdm9607-boot.img
    • fastboot flash recovery mdm9607-boot.img
    • If all the files have been correctly flashed, only then, run fastboot flash aboot appsboot.mbn

The reason for this is because if you reinstall the locked bootloader and some of the official files weren't flashed you might enter a reboot loop and you will need to open the phone and short the emergency recovery test points to get into EDL mode and use Qfirehose.

Have fun!

Yocto 3.3: Help me fix audio

15 Apr 12:03
Compare
Choose a tag to compare
Pre-release

NO LONGER NECESSARY, NO NEED TO USE THIS

DEBUG BUILD - READ THIS FIRST

I want to fix audio once and for all, but to do that I'm going to need your help. The modem uses different configurations depending on the call type and how it is registered with the provider. I've profiled the ones used by the two telcos I use but there's a world of carriers out there. So, if audio works for you with stock firmware but doesn't with mine, you can help me fix audio by making some simple tests:

  1. Flash this debug version of the firmware
  2. Boot it, enter PIN on your SIM card, and let the phone idle for 10-20 seconds.
  3. Make a call, answer on the other end, and hang up after a few seconds.
  4. On your pinephone, run the following commands just after that:
  • adb shell dmesg > dmesg_outgoing.log
  • adb pull /var/log/openqti.log ./openqti_outgoing.log
  1. Reboot the modem (adb shell reboot) and redo from step 2, but with an incoming call. After you received the call, answered and hung up, retrieve the log:
  • adb shell dmesg > dmesg_incoming.log
  • adb pull /var/log/openqti.log ./openqti_incoming.log

IMPORTANT NOTES ABOUT THIS BUILD AND LOGGING:

When running in debug mode, OpenQTI will log the phone numbers, incoming SMS and every communication between the Pinephone and the Modem, so these logs will contain personal information (that's part of the reason I ask you to boot fresh, to avoid leaking too much info). I'm really just interest in a few commands, but those commands will have PII too, so if you're not OK with sharing these files with me (perfectly understandable) don't use this build, use the non debug one.
Why can't you just grab this info yourself? I don't believe in automatic telemetry, much less with PII info. I rather explain upfront how to retrieve the info and you choosing to send it to me rather than silently retrieve it. Plus, the modem itself can't access the internet by itself with this firmware, and I think it's better this way.
This is a debug build. It will do extensive logging to /var/log/openqti.log. While your NAND is safe (this firmware doesn't store any persistent data on the flash beside the firmware itself), if you leave it running for days it will eatup the RAM disk where the logs are stored, probably forcing you to reboot it. There can't be any persistent damage for this, but it can be annoying, so after you're done testing I recommend you to flash the normal package instead and stop OpenQTI from logging everything

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

Before you begin

While I always thoroughfully check every single release, you might encounter problems I didn't find. Audio is still flaky. Please, take a minute to get a copy of the stock firmware here (https://github.com/Biktorgj/quectel_eg25_recovery), and carefully read the README. If you don't know understand what it says, or don't know how to recover the firmware in case something goes wrong, avoid touching your modem

CHANGES FROM PREVIOUS RELEASE

  • First public build based in Yocto 3.3 Hardknott
  • Finally fixed the console UART in the kernel for those of you with wires coming out of the phone
  • GPS is working now
  • Mostly Quectel-free bootloader
  • Small fixes to the kernel and cosmetic cleanups on the kernel logs (removed upper frequencies for the ACPU, cleaned up some pieces of the device tree, and removed some redundant kernel messages and things I've left forgotten mostly)
  • Reworked openqti so it's less probable for it to get stuck if you're pushing the modem hard
  • Some AT commands implemented:
    • AT+ADBON / AT+ADBOFF: Control ADB at runtime
    • AT+RESETUSB: Detach and reattach USB
    • AT+PWRDN: Shut down the modem
    • AT+QFASTBOOT: Reboot the modem to Fastboot Mode
    • AT+REBOOT_REC: Force reboot to recovery
  • Better boot times, from power to ready in 23 seconds including the time waiting for you in the bootloader
    • 3.3 seconds of kernel boot time
    • ADSP firmware ready in 17 seconds
    • Modem ready in 21 seconds from kernel boot

Installation instructions:

  1. Get required tools: you need adb and fastboot
  2. Grab a copy of the firmware, and, optionally, a recovery firmware (https://github.com/Biktorgj/quectel_eg25_recovery)
  3. With the modem active, jump to fastboot mode:
    • If you don't have ADB enabled, enter the following command in /dev/ttyS2 (minicom -D /dev/ttyS2):
      • AT+QFASTBOOT
    • If you already have ADB enabled:
      • adb shell reboot bootloader
  4. After a bit, if you run lsusb you should see the modem in fastboot mode:
  • Bus 003 Device 005: ID 18d1:d00d Google Inc. Xiaomi Mi/Redmi 2 (fastboot)
  1. Once in fastboot mode, first flash the unlocked bootloader:
    • fastboot flash aboot appsboot.mbn
    • After that fastboot reboot ; fastboot oem stay
  2. After flashing and rebooting to the bootloader the modem will say FAILED (remote: 'Waiting for orders!')
  3. Now you can flash everything:
  • fastboot flash boot boot-mdm9607.img
    • If you get an error flashing the kernel, run fastboot flash:raw : fastboot flash:raw boot boot-mdm9607.img
  • fastboot flash recovery recovery.img
  • fastboot flash system rootfs-mdm9607.ubi
  • fastboot flash recoveryfs recoveryfs.ubi
  1. After you flashed everything, you can run 'fastboot reboot' and wait for it to come back.

If you want to return to stock, I would advise to keep the unlocked bootloader. It will do no harm, and it will give you more recovery functions in case you mess something up or something in the firmware breaks. It is compatible with Quectel's firmware, and the only thing it doesn't do is allowing automatic OTA updates. In case you want to recover the bootloader too, follow the following steps exactly

  • Grab the recovery image from my recovery repo: https://github.com/Biktorgj/quectel_eg25_recovery
  • Extract it to some folder and move to the update/ folder
  • One by one, flash all the image files, in this order:
    • fastboot flash system mdm9607-sysfs.ubi
    • fastboot flash recoveryfs mdm9607-recovery.ubi
    • fastboot flash boot mdm9607-boot.img
    • fastboot flash recovery mdm9607-boot.img
    • If all the files have been correctly flashed, only then, run fastboot flash aboot appsboot.mbn

The reason for this is because if you reinstall the locked bootloader and some of the official files weren't flashed you might enter a reboot loop and you will need to open the phone and short the emergency recovery test points to get into EDL mode and use Qfirehose.

Have fun!

Initial AT Command support

29 Mar 15:44
Compare
Choose a tag to compare

NOTE: Don't use this unless you know what you're doing

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

Before flashing

This isn't even alpha, so make sure you know your modem recovery methods. Grab a copy of the firmware recovery repo (https://github.com/Biktorgj/quectel_eg25_recovery), and carefully read the README. If you don't know what it says, don't attempt to use this.

CHANGES FROM PREVIOUS RELEASE

  • Initial support for AT Command answering. Most of the commands don't do anything but "ACK" whatever is asked from the host without really doing anything, as it's all preconfigured, but makes eg25manager not complain
  • Some fixes to audio. It still dies at some point but unsure if it does that on the host or on the modem
    • If you try this firmware please let me know if audio works for you (either outgoing or incoming calls)
  • Logging support on OpenQTI. By default it logs to /var/log/openqti.log. If you want more verbose logs, start the daemon with " -l" or with " -d -l" to debug to screen
  • Only remaining bit of closed source blobs is the ADSP firmware itself

Installation instructions:

  1. Get required tools: you need adb and fastboot
  2. Grab a copy of the firmware, and, optionally, a recovery firmware (https://github.com/Biktorgj/quectel_eg25_recovery)
  3. With the modem active, jump to fastboot mode:
    • If you don't have ADB enabled, enter the following command in /dev/ttyS2:
      • AT+QFASTBOOT
    • If you already have ADB enabled:
      • adb shell reboot bootloader
  4. After a bit, if you run lsusb you should see the modem in fastboot mode:
  • Bus 003 Device 005: ID 18d1:d00d Google Inc. Xiaomi Mi/Redmi 2 (fastboot)
  1. Once in fastboot mode, first flash the unlocked bootloader:
    • fastboot flash aboot appsboot.mbn
    • After that fastboot reboot ; fastboot oem stay
  2. After flashing and rebooting to the bootloader the modem will say FAILED (remote: 'Waiting for orders!')
  3. Now you can flash everything:
  • fastboot flash boot boot-mdm9607.img
    • If you get an error flashing the kernel, run fastboot flash:raw : fastboot flash:raw boot boot-mdm9607.img
  • fastboot flash recovery recovery.img
  • fastboot flash system rootfs-mdm9607.ubi
  • fastboot flash recoveryfs recoveryfs.ubi
  1. After you flashed everything, you can run 'fastboot reboot' and wait for it to come back.

If you want to return to stock, I would advise to keep the unlocked bootloader. It will do no harm, and it will give you more recovery functions in case you mess something up or something in the firmware breaks. It is compatible with Quectel's firmware, and the only thing it doesn't do is allowing automatic OTA updates. In case you want to recover the bootloader too, follow the following steps exactly

  • Grab the recovery image from my recovery repo: https://github.com/Biktorgj/quectel_eg25_recovery
  • Extract it to some folder and move to the update/ folder
  • One by one, flash all the image files, in this order:
    • fastboot flash system mdm9607-sysfs.ubi
    • fastboot flash recoveryfs mdm9607-recovery.ubi
    • fastboot flash boot mdm9607-boot.img
    • fastboot flash recovery mdm9607-boot.img
    • If all the files have been correctly flashed, only then, run fastboot flash aboot appsboot.mbn

The reason for this is because if you reinstall the locked bootloader and some of the official files weren't flashed you might enter a reboot loop and you will need to open the phone and short the emergency recovery test points to get into EDL mode and use Qfirehose.

Have fun!