Changes

Jump to navigation Jump to search
→‎Quectel EG25-G Modem: template fix, typo
= Modems used in Pine64 boards and devices =
== Quectel EG25-G Modem ==
Quectel EG25-G is an LTE Cat 4 module optimized specially for M2M and IoT applications. It is used in the PinePhone.
=== {{hint| Quectel EG25-G Modem === * Specifications: https://www.quectel.com/UploadFile/Product/Quectel_EG25-G_LTE_Specification_V1had updated their WordPress website, and the links no longer works any more.1.pdf* Hardware design: You may try [https://wwwweb.quectelarchive.comorg/UploadImage/Downlad/Quectel_EG25-G_Hardware_Design_V1.2.pdf* AT Interface reference manual: https://www.quectel.com/UploadImage/Downlad/Quectel_EC2x&EG25-G&EG9x&EM05_FILE_AT_Commands_Manual_V1.0Internet Archive] or ask for them in the communities.pdf}}
* Specifications:<br>https://www.quectel.com/UploadFile/Product/Quectel_EG25-G_LTE_Specification_V1.1.pdf
* Hardware design:<br>https://www.quectel.com/UploadImage/Downlad/Quectel_EG25-G_Hardware_Design_V1.2.pdf
* AT Interface reference manual:
** 1.3 for EC25:<br>https://www.quectel.com/UploadImage/Downlad/Quectel_EC25&EC21_AT_Commands_Manual_V1.3.pdf
** 2.0 for EC25 and EG25-G:<br>https://www.quectel.com/UploadImage/Downlad/Quectel_EC2x&EG9x&EG2x-G&EM05_Series_AT_Commands_Manual_V2.0.pdf
* AT Interface file operations:<br>https://www.quectel.com/UploadImage/Downlad/Quectel_EC2x&EG25-G&EG9x&EM05_FILE_AT_Commands_Manual_V1.0.pdf
=== Specifications ===
* Processor Family: Qualcomm MDM9607
* CPU: Qualcomm MDM9207
* Cores: 1 ACPU Core, Qualcomm Hexagon DSP
* Total RAM: 256Mb
* Total flash space: 256Mb
* Available RAM for the ACPU: 160Mb
{| class="wikitable"
| Processor Family || Qualcomm MDM9607
|-
| CPU || Qualcomm MDM9207
|-
| Cores || 1 ACPU Core, Qualcomm Hexagon DSP
|-
| Total RAM || 256Mb
|-
| Total flash space || 256Mb
|-
| Available RAM for the ACPU || 160Mb
|}
=== NAND Partition table layout ===
* {| class="wikitable"! Index! Name! Description|-| MTD0: || <code>SBL (</code>| Secondary Bootloader), called from the BootROM. Used to start the TrustZone kernel and the Application Bootloader (LK). Also used to enter Quectel's recovery mode* |-| MTD1: || <code>mibib (</code>| Unknown, used by the DSP)* |-| MTD2: || <code>EFS2 (</code>| Unexplored, probably NVRAM data, Used by the DSP)* |-| MTD3: || <code>sys_rev: </code>| Unexplored* |-| MTD4: || <code>rawdata: Unexplored</code>| This is where FOTA update data exists before being commited to system or recoveryfs partitions|-* | MTD5: || <code>tz: </code>| TrustZone kernel* |-| MTD6: || <code>rpm: </code>| Resource / Power Manager* |-| MTD7: || <code>cust_info: </code>| Unexplored* |-| MTD8: || <code>aboot: </code>| Application Bootloader. Uses [https://github.com/littlekernel/lk LK ] (LittleKernel, LK embedded kernel) as the bootloader. By default it allows flashing unsigned images but won't allow booting them, soft-bricking the modem until you enter EDL mode* |-| MTD9: || <code>boot</code>| [https: //www.openembedded.org/wiki/Main_Page OpenEmbedded ] boot kernel + DTB* |-| MTD10: || <code>recovery: </code>| Recovery kernel (normally unused)* |-| MTD11: || <code>modem: </code>| ADSP firmware blobs* |-| MTD12: || <code>misc: </code>| Unexplored* |-| MTD13: || <code>recoveryfs: </code>| Recovery filesystem image (FOTA updates)* |-| MTD14: || <code>usr_data: </code>| User data partition (<code>/data </code> when mounted by OpenEmbedded)* |-| MTD15: || <code>sec (</code>| Used to blow fuses in the mdm9207 from images generated by Qualcomm Sectools)* |-| MTD16: || <code>system (</code>| Linux OpenEmbedded root image, formatted in Ubifs filesystemUBIFS (Unsorted Block Image File System, [https://en.wikipedia.org/wiki/UBIFS Wikipedia])|}
=== Firmware Recovery ===
{{warning|1=== Firmware Recovery ===The following instructions are directed towards expert-level users and developers!}} The System partition is mounted as readonly read-only mode, but the data partition is writable. It might be possible, if there's an unexpected reset or power is lost while running, that the data partition gets corrupt and thus unable to boot. [[File:Pinephone-EG25-Recovery.jpg|thumb|right|PinePhone USB_BOOT test points]]
The modem has 4 different boot modes:
* Qualcomm EDL Mode
If the modem is unable to boot, depending on the type of crash, it might :* not show anywhere (USB device missing), it might * or malfunction (no radio but USB working), * or it might enter EDL mode , if the entire flash is corrupt.
In any scenario, '''Boot the modem can be triggered to enter device in EDL mode by shorting two test pins in the PinePhone Motherboard. Power off the phone, short the two test points and start it again while keeping the pads shorted at least until you hear the camera clicking twice (which is normally when the modem is powered)[[File:Pinephone-EG25-Recovery.jpg|thumb|PinePhone USB_BOOT test points]]'''
Download the Firmware Recovery Package and copy it to the Pinephone: https://github.com/Biktorgj/quectel_eg25_recovery/archive/master.zipTo check if you're currently the device is booted in EDL mode, run <code>lsusb </code> (a part of the <code>usbutils</code> package) in a terminal and inspect the output. You should see the following device listed: Bus 003 Device 003: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)
Once in EDL Bus 003 Device 003: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode, open a terminal and go to the root directory of the recovery package, and run:)
If you use an ARM64 distro (most likely) In any scenario, the modem can be triggered to enter EDL mode by shorting two test pins on the PinePhone motherboard./qfirehose_arm64 -f ./
If # Power off the phone# short the two test points# boot the phone while keeping the test points shorted until fully booted up, at least until you use an ARMHF hear the camera clicking twice (32 bitwhich is normally when the modem is powered) distro: ./qfirehose_armhf -f ./
After it finishes, it will reboot '''Get the modem and after about 30 seconds it will get back up and runningFirmware Recovery Package'''
The Firmware Recovery Package is at: https://github.com/Biktorgj/quectel_eg25_recovery
 
Either clone its repo with git, or download its archive & unzip it.
 
As you should have no access to the Internet on PinePhone when its modem need a Recovery, you can fetch it on other devices and copy it to the Pinephone.
 
'''Execute the Quectel QFirehose utility'''
 
Once in EDL mode, open a terminal, navigate to the root directory of the recovery package, and run:
 
* If you use an ARM64 distribution (most likely): <code>sudo ./qfirehose -f ./</code> or <code>sudo ./qfirehose_arm64 -f ./</code>
* If you use an ARMHF (32 bit) distribution: <code>sudo ./qfirehose_armhf -f ./</code>
 
It will reboot the modem after finished. After about 30 seconds, it will get back up and running.
=== Bootloader unlocking ===
 
{{warning|1= The following instructions are directed towards expert-level users and developers!}}
 
The Modem has a locked bootloader. It won't allow to boot unsigned Kernel images, but will allow to flash them, making it easy to brick the modem. To fix this, you can flash an unlocked bootloader, which will then allow you to do as you please with the hardware.
The source Unlocked bootloader:* Source code for the Bootloader is here: https://github.com/Biktorgj/quectel_lk* Prebuilt binary releases can be downloaded from here: https://github.com/Biktorgj/quectel_lk/releases === Custom Kernels and system images === {{warning|1= The following instructions are directed towards expert-level users and developers!}}
Custom kernel builds and system images can be created for the modem, though they require a couple of things to be correctly built and be bootable.
=== Custom Kernels * The source code release for the kernel provided by the manufacturer is incomplete and won't build* Common Android tools like mkbootimg and dtbtool won't build a bootable image, even if the kernel is correctly compiled and all the DTBs attached.* Further, there's no source for the OpenEmbedded parts, so building a new system images ===image must be done from scratch, and retrieving the mandatory binary blobs to use the ADSP part of the modem.
Custom kernel builds and system images can be created for the modem, though they require There's a couple of things to be correctly built and be bootable. The source code release for the kernel provided by the manufacturer is incomplete and won't build, and common Android tools mkbootimg and dtbtool won't build a bootable image, even if the kernel is correctly compiled and all the DTB's attached. Further, therework in progress'''s no source for the OpenEmbedded partsSDK to allow creating custom kernels and system images, so building a new system image must which can be done downloaded from scratch, and retrieving the mandatory binary blobs to use the ADSP part of the modemfollowing repository: https://github.com/Biktorgj/pinephone_modem_sdk
There's a _Work in progress_ SDK to allow creating custom kernels See its readme for infomations and system imagesinstructions. Once downloaded, you should run the <code>init.sh</code> script, which can be downloaded from will create all the base directories and download all the different repositories required to build. After the following repo: https:initial setup is complete, run<code>make<//githubcode> without arguments to list the available options.com/Biktorgj/pinephone_modem_sdk
Once downloaded, you should run the 'init.sh' script, which will create all the base directories and download all the different repos required to build. After the initial setup is complete, run 'make' without arguments to list the available options[[Category:PinePhone]]
Moderator
1,091

edits

Navigation menu