yashsingh1/xdaforums huggingface dataset:
[Android Q&A, Help & Troubleshooting] Renate:
I don't own an A9, I don't use Koreader, I would hate to have full refresh on a page turn. (And I don't use Tasker.)

I have reverse engineered Eink interfaces on B&N and Onyx.

The Hisense is the first one that I've seen that uses the Manager/Service paradigm.

I just put that info out for intrepid folks to mod their own stuff.
[Android Q&A, Help & Troubleshooting] Renate:
Not at all an alternative to the Hisense (since it only does WiFi, not cellular) but somebody might like the Onyx Boox Palma.

Currently they've run out of the initial test release, but it should be back.
[Android Q&A, Help & Troubleshooting] dferreira:
Yes, for me as well. I do get push notifications, location works (Google Maps as well). Installed Microsoft Outlook and installed Google Calendar Sync and Google Contacts Sync and now I have calendar and contacts on the Google Phone and Google Messages apps as well.
[Android Q&A, Help & Troubleshooting] doschxda:
I know have 0Launcher as my default. And this is already pretty close to a Light Phone.

The interface is clean, I only have a few apps.

Root would still be nice to be able to delete all the chine pre-installed apps.

Do note: two apps are not listed here, but are easily opened from this screen: a swipe left opens the dialer, a swipe right open KOreader; my most used apps.
[Android Q&A, Help & Troubleshooting] ferlanero:
Hisense A9 (hisense-hlte556n) - postmarketOS Wiki

wiki.postmarketos.org
[Android Q&A, Help & Troubleshooting] Andicuri:
Could you please provide a tutorial on how you were able to accomplish this?
[Android Q&A, Help & Troubleshooting] doschxda:
You can install f-droid from their website: https://f-droid.org/

Add the MicroG repo to f-droid and install MicroG: https://microg.org/fdroid.html

You can downloaden 0Launcher from fdroid and set it as the default launcher from the 0Launcher settings: https://f-droid.org/packages/app.olauncher/

It is all run of the mill and best documented on the websites of the makers of those softwares.
[Android Q&A, Help & Troubleshooting] elermo:
is anyone still trying to root this thing?
[Android Q&A, Help & Troubleshooting] Andicuri:
Thank you for your reply.

Indeed it is pretty run of the mill, and I did manage to get most of those steps done.

But I still did not manage to get GSF working properly.

It's unclear how to get the signature spoofing to work as defined as a prerequisite in the following link:

Prerequisites

Free implementation of Play Services. Contribute to microg/GmsCore development by creating an account on GitHub.

github.com

That's why I was hoping someone would be able to point me to a tutorial.

I guess I'll just try from scratch.
[Android Q&A, Help & Troubleshooting] dferreira:
Signature spoofing is not supported without a ROM that has added support for it. While most things work without signature spoofing, most Google apps will fail to identify your Google Account that is setup via microG. We will need root for that.
[Android Q&A, Help & Troubleshooting] dferreira:
Running on the terminal:

> fastboot flashing get_unlock_ability

Returns 1 (true). So there is a chance.

Turning off the phone and Pressing Volume Up and plugging in a USB-C cable and we enter fastboot mode.

To get into EDL mode, you need to enable developer mode, and use ADB to reboot to edl:

> adb reboot edl

I tried using fastboot to get into EDL and it doesn't work.

I've been able to use Magisk to patch the current firmware boot.img to include root. My hope is that I can use EDL mode to boot from it. Setting up a VM with Windows 11 so I can use Qualcomm drivers and tools (running Fedora here)
[Android Q&A, Help & Troubleshooting] dferreira:
Making some progress, I can now communicate over edl with the device. Will keep you posted.
[Android Q&A, Help & Troubleshooting] Renate:
Does that mean that you've found a Firehose loader for this?
[Android Q&A, Help & Troubleshooting] denzilferreira:
Hey sorry I should have been more specific: no, sadly. I meant the tools could now detect my device available on EDL, but have not found a firehouse loader that is signed to talk with this device 😮‍💨
[Android Q&A, Help & Troubleshooting] dferreira:
OK, I got the firehose .elf that allows us to communicate with Hisense A9 🎉 I've added it to a shared Google Drive folder where I'll be collecting useful files for rooting this thing.

HisenseA9-root - Google Drive

drive.google.com
[Android Q&A, Help & Troubleshooting] Renate:
Well, that loader could certainly be the correct one. It's signed by Hisense and covers the SDM662, but your screenshot shows nothing.

How about showing us the rest of what happened, as text, inside [code] markup?

Also, make a backup copy of the boot image first before overwriting it.
[Android Q&A, Help & Troubleshooting] Renate:
So you're saying that "Mode detected: sahara" is the last thing that came out?

Then it didn't even look at your loader, it certainly didn't write anything.

Maybe the USB froze, but your EDL client certainly didn't know, didn't say.

Hey @RunnyYolk you want to try this new loader using my EDL client?

@dferreira If you have access to a regular Windows machine you can try my EDL client (in my sig).

Of course, the Windows driver and command line are different, just read the documentation.

In any case, for anyone. If you are trying to get this to work on whichever EDL client:

Just get the Firehose loader to load first, no operations, no writes, no reads.

Do the simplest operation next, listing the GPT

Then do a read operation of whatever you think you will overwrite.

Maybe even do it again and compare the files

Then write your file if you wish
[Android Q&A, Help & Troubleshooting] dferreira:
which to me looks like a good .edl file!

> sahara - Loader successfully uploaded.
[Android Q&A, Help & Troubleshooting] Segnaro:
PS C:\Users\orange\Desktop\platform-tools\edl> .\edl.exe /lprog_firehose_ddr_001360E1.elf

Found EDL 9008

Serial: 0b1d7e5e

HWID: 0014d0e100430000, QC: 0014d0e1, OEM: 0043, Model: 0000

Hash: 56d3f3c74a52172b-18ca2297db00f3fe-ebd23cdfc77decfb-34268abca09d9075

Sending prog_firehose_ddr_001360E1.elf 100% Ok

Waiting for Firehose... Ok

PS C:\Users\orange\Desktop\platform-tools\edl> .\edl.exe /g

Found EDL 9008

Configuring... Ok

Requesting GPT 0 header...

<log value="ERROR: Failed to open the SDCC Device slot 0 partition 0" />

<log value="ERROR: Failed to open the device:1 slot:0 partition:0 error:0" />

<log value="ERROR: OPEN handle NULL and no error, weird 203918652" />

<log value="ERROR: Failed to open device, type:eMMC, slot:0, lun:0 error:3" />

Nope
[Android Q&A, Help & Troubleshooting] Kandwo:
I already have it set to clear mode. Page turns still cause ghosting (if you look closely the outlines of the letters get slightly blurry/less sharp after each page turn). On a device that's supported, e.g. Kobos, Onyx Boox, one can set the screen to fully refresh on each page turn so that the text is sharp without any blurred edges. Clear mode doesn't do a full refresh on page turns it just minimizes the ghosting (which is still present and visible).

I can't read without the full refresh. I have it on all my devices. My eyes pick up on the imperfect letters and it annoys me. This is when I do focused reading of a longer text (novel, longer article, non-fiction book, etc).

And how would one reverse engineer it? What file would need to be edited? How do I make Koreader (or any other reader app) call the functions listed here in this thread? I don't need support for the other e-ink refresh modes (that can be set by the system) just the full refresh upon page turn.
[Android Q&A, Help & Troubleshooting] dferreira:
I think the clear mode will fix this + flush screen. Let’s see how this whole thing works together as soon as I’m able to sit down and spend some time around this 😉
[Android Q&A, Help & Troubleshooting] Renate:
That's perfectly fine. I know that there is nothing so personal as taste when it come to ereading.

Others have said that the stock settings are sufficient. I don't know.

If you want a full refresh the code is simple, but you'll have to figure out where to put it in Koreader and framework.jar will need to be modified.

I can give a hand with the second part.

EpdManager epd = (EpdManager) context.getSystemService("epd");
// You might want to cache this
epd.forceClear();
[Android Q&A, Help & Troubleshooting] thrond:
I'm so happy to see that a lineage os port is in the works. I'm really enjoying this phone, but it will be way be better without all of the chinese spyware ;). Thank you everyone for all your work.
[Android Q&A, Help & Troubleshooting] user2938473:
I’m having issues with my A9 with messaging apps not updating in the background. Specifically the Signal app because I use it the most, but it’s also happening with WhatsApp. If I lock my phone and leave it for a short period of time I will stop getting notifications of new messages and will have to manually open the app to refresh messages.

I’ve already given the Signal app all the permissions I can and disabled battery saving for it in settings. I’m also not using battery saver mode in general. Are there any things I can do with adb to make the app update in the background?
[Android Q&A, Help & Troubleshooting] bigwigs:
Is it possible to additional lte bands especially for US carriers with root?
[Android Q&A, Help & Troubleshooting] thrond:
I highly doubt it, pretty sure It's a hardware limitation not a software one.
[Android Q&A, Help & Troubleshooting] bigwigs:
This is old video but it was possible to enable lte bands for Qualcomm -
[Android Q&A, Help & Troubleshooting] emezrahi:
~~just stumbled across this thread. Would this work on the hisense touch?~~

found it in the thread! Got stuck in a bootloop after installing gapps.
[Android Q&A, Help & Troubleshooting] emezrahi:
did you ever fix this? I got a bootloop after installing the magisk gapps.
[Android Q&A, Help & Troubleshooting] bigwigs:
Same thing happens to me.

The device when connected in non fastboot mode, it shows up as Hisense device and in adb devices list.

The winusb.sys driver from system32 /drivers is used. The version is 10.0.19041.1.

But when i start phone in fastboot mode then it doesn’t recognize it as Hisense device but generic android shows “waiting for device”.

I’m using windows 10. Will try using Ubuntu and check
[Android Q&A, Help & Troubleshooting] bigwigs:
I was able to resolve this by using windows update. It downloaded some Android driver and the phone showed in fastboot mode too.
[Android Q&A, Help & Troubleshooting] bigwigs:
I was able to open EFS structure using QPFS EFS Explorer.

It is connected on COM6 port.

Not sure , which files/folder to edit for LTE bands access. there are multiple nv folders.

Used following to connect :-

adb shell

su

setprop sys.usb.config diag

FYI- do not enable file access to usb on phone, keep it to charging otherwise, the above connection will not be established or it will be disconnected.
[Android Q&A, Help & Troubleshooting] incjourn:
I'm stuck with the 'Prepare Boot.img' step. I've installed the Magisk app but the 'modules' button at the bottom right is greyed out and so I can't prepare an image. Can anyone please help?
[Android Q&A, Help & Troubleshooting] bigwigs:
You don't need to use modules for prepare boot.img. You need click install next to Magisk. Then it will give u screen with options under Method. Use 1st option to Select and Patch the file. Use the file you to moved to ur phone. It will create new file starting with magisk name once new boot.img is created. u need to use that for fastboot.
[Android Q&A, Help & Troubleshooting] bigwigs:
I downloaded nv-items_reader_writer from https://androidfilehost.com/?fid=13858035414129967584 and then was able to read nv file from phone and store it as txt file.

Attached screenshot. i can share txt file if needed.
[Android Q&A, Help & Troubleshooting] incjourn:
Thanks. I misunderstood the process. Sorted now!
[Android Q&A, Help & Troubleshooting] dferreira:
Hello there `epd` service :cool: installing now the latest GSI image with this service baked as a system service for privileged access to hardware. If all is good, I'll release it tonight.
[Android Q&A, Help & Troubleshooting] Renate:
Have you got all your ducks in a row?

SystemUi - EpdManager - EpdService - (required libs?)
[Android Q&A, Help & Troubleshooting] dferreira:
I'm thinking I'll be alright with the EpdManager + EpdService. This is a GSI Lineage build, so the libs, kernel are intact as stock, only the system is replaced. SystemUi may require changes for the Epd callbacks, but will have to test first. I forgot to add <service exported="true"> to the AndroidManifest... the package is installed but I can't call the service. Any idea where I tell on Android to start the service on boot? would this be init.rc?
[Android Q&A, Help & Troubleshooting] bigwigs:
For notifications, there is another setting that needs is set to "Always" -"Keep WLAN network connected during sleep" function in Settings-WLAN-Configuration?
[Android Q&A, Help & Troubleshooting] bigwigs:
It seems InkOS port of Android has crippled many capabilities to improve battery and other resources. especially the phone part.

Wonder LineageOS port will remove some if not all limited capabilities.

its been longtime since I came back to Android from cyanogen mod days.

Thank you dferreira , Renate and others for ur efforts and help in this post. Got A9 over weekend and had it rooted in no time.
[Android Q&A, Help & Troubleshooting] bigwigs:
Here is good read on init.rc - https://dev.to/larsonzhong/android-system-init-process-startup-and-init-rc-full-analysis-22hi
[Android Q&A, Help & Troubleshooting] Renate:
No, that is for init services.

Android system services are Java extend SystemService, run under system.

You have to patch SystemServer, see https://android.googlesource.com/pl...ces/java/com/android/server/SystemServer.java

t.traceBegin("StartMidiManager");
mSystemServiceManager.startService(MIDI_SERVICE_CLASS);
t.traceEnd();

You have to patch Context so that you can getSystemService("epd")
[Android Q&A, Help & Troubleshooting] bigwigs:
Found this Secret Codes app on f-droid that crawls android phone for phone specific secret codes. It did display some codes specific to a9 as they were invoking ftmode app. I wasn’t able execute the codes from app as my default phone dialer is Google phone which is blocked from running the codes but Hisense a9 dialers allows some dialer codes.

I haven’t tried all codes but will do it later manually. Maybe one of them will allow to enable lte bands😊

GitHub - SimonMarquis/Android-SecretCodes: Secret Codes is an Open Source application that allows you to browse through hidden codes of your Android phone.

Secret Codes is an Open Source application that allows you to browse through hidden codes of your Android phone. - SimonMarquis/Android-SecretCodes

github.com
[Android Q&A, Help & Troubleshooting] dferreira:
Thanks. I've now added the service node to the AndroidManifest.xml, and now patched SystemServer. It's compiling! Reading the .smali code, EpdManager is the service. And it seems that when it starts, it sets the display mode to balanced by default, so we should get the display fixed from boot! Can't wait for this to finish compiling... I need a faster machine :D
[Android Q&A, Help & Troubleshooting] dferreira:
InkOS does everything it can to preserve as much power as possible. That's why we stop getting push notifications and missed calls if we are not using the vendor calling app (because those are OKed). With LineageOS, this does not happen anymore. I can give LineageOS 21 a go (Android 14) once I get LineageOS 20 working properly.
[Android Q&A, Help & Troubleshooting] bigwigs:
Some of the codes work but don’t do much. One of the codes which might have potential to change bands under ftmode requires additional password to access full developer mode.
[Android Q&A, Help & Troubleshooting] bigwigs:
I was looking to enable additional lte bands without making changes to modem nvram directly. Will do so as last option.

Also disabling of other bands would be to conserve power as some of the US bands requires additional power amplifier capacity based on one of the posts I was reading on xda.
[Android Q&A, Help & Troubleshooting] Renate:
Err, not really. Yes/no.

IEpdManager is the interface that both the client and the server has to implement. It's abstract and contains the transaction numbers.

IEpdManager.Stub is what the server EpdService is built on.

IEpdManager.Stub.Proxy is the interface that marshall calls (Parcel) for the client to the server.

EpdManager is a class that invokes IEpdManager.Stub.Proxy

Simple, eh?
[Android Q&A, Help & Troubleshooting] dferreira:
The joys of OOP and GoF Design Patterns 🤣
[Android Q&A, Help & Troubleshooting] dferreira:
Try “Hisense” or “hisense” 🤣
[Android Q&A, Help & Troubleshooting] dferreira:
Won’t this require kernel source? Sadly Hisense has not shared it, breaking GPL… and I’m pretty sure we don’t have kernel support for the eink display. I tried booting PostmarketOS and got nothing on screen.
[Android Q&A, Help & Troubleshooting] dferreira:
Hum... back to reading smali to figure out what permission I need to add to the AndroidManifest.xml. Closer!
[Android Q&A, Help & Troubleshooting] dferreira:
OK... now I see I'm missing to add these too... so EpdManager is a client, and this is the service 🤔
[Android Q&A, Help & Troubleshooting] dferreira:
OK... added now the service. Also fixed screen density and boot width and height now. Rebuilding...
[Android Q&A, Help & Troubleshooting] dferreira:
Darn I hate Java :D
[Android Q&A, Help & Troubleshooting] dferreira:
I had both EpdManager and EpdManagerService with the same package name so the last attempt failed to even boot. Fixed that and it's installing now. Will report soon if we have a successful build.
[Android Q&A, Help & Troubleshooting] bigwigs:
Getting weird values looking at NV for 1877

nv1877-1.png is using old version of nv reader from qspt and nv1877.png is using newer version of qspt.

trying follow this post - https://xdaforums.com/t/unlocking-bands-for-na-usage.3884098/

wonder what values(format) are stored in qcn files. surely, they are not hex.
[Android Q&A, Help & Troubleshooting] bigwigs:
I tried changing rb_bc_config and lte_bc_config values based on https://xdaforums.com/t/unlocking-bands-for-na-usage.3884098/ using qxdm app but was not successful

It bricked my network and sim connection.

I did factory reset and did following to restore my sim and wifi network :-

adb reboot fastboot

fastboot erase modemst1

fastboot erase modemst2

Above are Windows command and wipe wasn't there in fastboot downloaded from earlier steps but erase worked.

Seems like, for reading no service code is required for writing qcn values.

FYI, restoring backed QCN from QSPT tool also didnt work. It seems, it would require service code too.

Good luck, if you are trying to unlock bands.
[Android Q&A, Help & Troubleshooting] bigwigs:
Looking forward to this. Let me know if i can help out in anyway. Have a powerful machine at my disposal and rusty Java programming skills.
[Android Q&A, Help & Troubleshooting] ntindle:
I loaded core GAPPS instead of lite. Now I’m stuck on a Hisense screen. I can’t get `adb devices` to find any devices.

Do I need an EDL cable to wipe the device or is there a way to enter the menu
[Android Q&A, Help & Troubleshooting] bigwigs:
Im still stuck with no IMEI after bricking phone trying to change bands.

After erasing modemst1 and modemst2, im able to use wifi and phone but imei and esn is empty.

The efs explorer also shows that mcfg and num folder in accessible.

Restoring backed up qcn file using QFIL hasn't helped either. QCN restore completes successfully but folders are still inaccessible.

With folders inaccessible, IMEI fix is not possible.
[Android Q&A, Help & Troubleshooting] bigwigs:
Can anyone pls share your EFS backup? I need to restore IMEI and ESN. Thanks!
[Android Q&A, Help & Troubleshooting] bigwigs:
Based on post - https://xdaforums.com/t/hisense-a5-pro-cc-how-to-root-unlock-bootloader.4109021/post-86534213

password used for FTMode. It's simply the last four of your SIM1 IMEI + the number of the menu element you're selecting, padded with a zero if its only one digit. So for the "Engineer mode option", since the last four of my IMEI is 3782, the password would be "378201" since Engineer mode is the first option on the menu. For the 15th menu option, it would be "378215". This works for every option except for the "Sim Lock Test" option, which is difficult to figure out since it calls a native library to check the password.

Unfortunately, it doesn't work for me as my IMEI is not readable.
[Android Q&A, Help & Troubleshooting] dferreira:
Yep... been there. EDL is the only way to get it back working...
[Android Q&A, Help & Troubleshooting] dferreira:
Do you know what partition is it that you need? A full backup is HUGE.
[Android Q&A, Help & Troubleshooting] bigwigs:
if u can send me modemst1 , modemst2, fsg and fsc . i can try.

thanks!
[Android Q&A, Help & Troubleshooting] dferreira:
Hope it works ;) attached.
[Android Q&A, Help & Troubleshooting] bigwigs:
thanks for the files. No luck.

Is there any way to go back to factory mode with locked bootloader? Maybe try that to see if it restore efs partition?
[Android Q&A, Help & Troubleshooting] dferreira:
Once unlocked the bootloader, doing a factory reset does not lock it back. Locking the bootloader makes no sense. You can flash factory image even unlocked, OTAs. You need a dump of a factory image. But I’m thinking here that the IMEI and those are not part of the OS, it’s unique to your phone. So I’m not 100% sure but you may have no way to get those back 😅
[Android Q&A, Help & Troubleshooting] bigwigs:
yeah, it is unique to hisense a9 for sure. there is someone else also in same situation. They posted the same on reddit.

i think it is

Threedollarbridge but i could be wrong.​

Funny part in QCN restore doesn't work even though it says success.

This is good post -

https://www.reddit.com/r/Xiaomi/comments/903k2v

I have QCN backup before i made changes trying to add LTE bands. But that QCN doesn't work . I can only restore QCN after LTE Bands mess up.

I tried comparing two QCN. The one which is messed up has more NV Items than original one. I tried comparing and merging one to another. No luck.

There is something in restore process where the QSPT tool doesn't restore if number of NV items is different.

QFIL tool has no such issues, it says success but doesn't change much. QSPT tool also says success but most items are not overwritten. :)
[Android Q&A, Help & Troubleshooting] dferreira:
I wonder if this is something that Linux may help you more than Windows. I was not able to restore my phone with Windows. I used Linux to get my A9 up again. QFIL would fail in Windows!

You’ll need QDL from Qualcomm and EDL from Bkerler. EDL allows you to read and write partitions. QDL allows you to use QFIL dumps and flash them. I shared here the whole command line I used to restore my device.

Qualcomm USB flashing tool

32- and 64-bit ARM Open Platform Specifications. For software developers. For the maker community. For embedded OEMs. 64-bit ARM for $129.

www.96boards.org

GitHub - bkerler/edl: Inofficial Qualcomm Firehose / Sahara / Streaming / Diag Tools :)

Inofficial Qualcomm Firehose / Sahara / Streaming / Diag Tools :) - bkerler/edl

github.com

Hope that’s helpful!
[Android Q&A, Help & Troubleshooting] bigwigs:
im willing to try. Do u have linux version of QDL/QFIL?
[Android Q&A, Help & Troubleshooting] dferreira:
Linaro / qcomlt / qdl · GitLab

CodeLinaro

git.codelinaro.org