10-13-2020, 09:44 AM
(This post was last modified: 11-30-2020, 12:43 AM by Subsentient.)
I'm providing an updated copy of the firmware for the PinePhone's Quectel EG25-G modem.
The flashing utility was provided to me by Quectel support, and the modem firmware from a forum link for another device that uses this modem.
As they don't have an easy download link, perhaps the only way you're going to get it is from me or megous.
NOTE: If compiling C programs, or the idea of modem firmware, or any of these concepts seem alien to you, you should NOT attempt this. This is only for the brave and the wise.
This assumes some knowledge of Linux command lines, as well as having played with the modem previously.
I am attempting to help as this significantly improved my phone's reliability, but if you follow these instructions, you do so at your own risk. I am not responsible for anything that may happen as a result of attempting this, including the destruction of your phone.
For me, this fixed call audio not working at random times, as well as losing control of an outgoing call in progress.
Here is the flashing utility, and here is the modem firmware.
Extract both archives, possibly with "tar xf" if you don't have a good GUI for that.
I pre-compiled the flashing utility for AArch64 Linux, but dynamically linked for glibc. That means it should work on Mobian, Fedora, etc, but not other, weirder systems.
If you can't run the precompiled version, there is a makefile included with the source code, so type "make" to compile it after installing gcc and make from your package manager.
!! DANGER !!: This resets some modem configuration options, and you will probably need to reset them manually before calls work correctly, if you don't use megous' new modem power manager in kernel 5.8 or later. You should update to such a kernel BEFORE proceeeding.
THIS IS A DANGEROUS ACTION THAT CAN DESTROY YOUR MODEM.
Put the extracted qfirehose_good and newfw folders in the same location.
Next, cd to the qfirehose_good folder, and run:
It should take about a minute or a little longer.
Afterwards, if it says upgrade succeeded, you're good.
If it fails, try a couple more times. If it says something about no such file or directory, you're probably fine, you just have the wrong path specified for newfw.
Lastly, if you're unable to use a newer kernel, here's a dump of good settings from megous' kernel driver. QDAI is the most important and probably the only one you really need to change. Try changing that one first and see if things work normally.
And, the QFirehose source code will make you cry. I'm surprised it works. Just warning you.
The flashing utility was provided to me by Quectel support, and the modem firmware from a forum link for another device that uses this modem.
As they don't have an easy download link, perhaps the only way you're going to get it is from me or megous.
NOTE: If compiling C programs, or the idea of modem firmware, or any of these concepts seem alien to you, you should NOT attempt this. This is only for the brave and the wise.
This assumes some knowledge of Linux command lines, as well as having played with the modem previously.
I am attempting to help as this significantly improved my phone's reliability, but if you follow these instructions, you do so at your own risk. I am not responsible for anything that may happen as a result of attempting this, including the destruction of your phone.
For me, this fixed call audio not working at random times, as well as losing control of an outgoing call in progress.
Here is the flashing utility, and here is the modem firmware.
Extract both archives, possibly with "tar xf" if you don't have a good GUI for that.
I pre-compiled the flashing utility for AArch64 Linux, but dynamically linked for glibc. That means it should work on Mobian, Fedora, etc, but not other, weirder systems.
If you can't run the precompiled version, there is a makefile included with the source code, so type "make" to compile it after installing gcc and make from your package manager.
!! DANGER !!: This resets some modem configuration options, and you will probably need to reset them manually before calls work correctly, if you don't use megous' new modem power manager in kernel 5.8 or later. You should update to such a kernel BEFORE proceeeding.
THIS IS A DANGEROUS ACTION THAT CAN DESTROY YOUR MODEM.
Put the extracted qfirehose_good and newfw folders in the same location.
Next, cd to the qfirehose_good folder, and run:
Code:
sudo ./QFirehose -f ../newfw
It should take about a minute or a little longer.
Afterwards, if it says upgrade succeeded, you're good.
If it fails, try a couple more times. If it says something about no such file or directory, you're probably fine, you just have the wrong path specified for newfw.
Lastly, if you're unable to use a newer kernel, here's a dump of good settings from megous' kernel driver. QDAI is the most important and probably the only one you really need to change. Try changing that one first and see if things work normally.
Code:
[ 41.248670] modem-power serial1-0: QDAI is '1,1,0,1,0,0,1,1'
[ 41.264677] modem-power serial1-0: QCFG 'risignaltype' is '"physical"'
[ 41.288660] modem-power serial1-0: QCFG 'urc/ri/ring' is '"pulse",1,1000,5000,"off",1'
[ 41.304783] modem-power serial1-0: QCFG 'urc/ri/smsincoming' is '"pulse",1,1'
[ 41.324645] modem-power serial1-0: QCFG 'urc/ri/other' is '"off",1,1'
[ 41.340632] modem-power serial1-0: QCFG 'urc/ri/pin' is 'uart_ri'
[ 41.356644] modem-power serial1-0: QCFG 'urc/delay' is '0'
[ 41.372625] modem-power serial1-0: QCFG 'sleepind/level' is '0'
[ 41.388666] modem-power serial1-0: QCFG 'wakeupin/level' is '0,0' (changing to '0')
[ 41.440653] modem-power serial1-0: QCFG 'ApRstLevel' is '0'
[ 41.456689] modem-power serial1-0: QCFG 'ModemRstLevel' is '0'
[ 41.472673] modem-power serial1-0: QCFG 'apready' is '0,0,500'
[ 41.488913] modem-power serial1-0: QCFG 'airplanecontrol' is '1,0'
[ 41.512699] modem-power serial1-0: QCFG 'fast/poweroff' is '1'
And, the QFirehose source code will make you cry. I'm surprised it works. Just warning you.