Skip to content

Instantly share code, notes, and snippets.

@samueldr
Last active April 2, 2024 14:55
Show Gist options
  • Save samueldr/fa19366bf85c4abf46fc2dfa83b288b2 to your computer and use it in GitHub Desktop.
Save samueldr/fa19366bf85c4abf46fc2dfa83b288b2 to your computer and use it in GitHub Desktop.

ZTE Cymbal 2 (8GB) Z2335L Notes

(zte-campbell)

With all those hapazard notes, it can't be a good Android experience. It requires hacks that the OEM put everywhere in the system for it to operate in a barely passable manner.

And uh, why did I get this? Because I hoped the bootloader would be unlockable and I could install Mobile NixOS. Sadly ZTE on many of their phones disables anything fancy with the bootloader. That's just not good.

I'm not sure it applies to other "feature phones" from ZTE, or any other vendors, but at least here you can install Android apps. But to do so you will need some way or another to install apps that is not the built-in apk installer. E.g. adb install will work. So the steps are

  • Enable developer mode
  • adb install the desired app

Oh, but how do you launch it? There is no launcher! As far as I can tell there is no integration with any foreign apps in the built-in launcher. It's an hardcoded list of apps. Read Changing the launcher if you're curious, but it won't work well due to assumptions from the vendor.

So in the end only launching intents through adb works. An enterprising individual could create a custom launcher app that hooks in the android accessibility layer (adb shell settings put secure enabled_accessibility_services packagname/servicename) and listens to input events and hijack some to launch an alternative launcher menu. Probably also by spying if the main menu is shown in some form or other.

But that's way too much work for not that much benefit.

Apps suck without a touchscreen. And it's not an Android issue really. It's a development issue by app developers. They are tested only on touch input, so it's hidden from them that some actions are completely fenced-off from being accessible through the keyboard.

Developer mode

It's just like with other Android phones, but instead of tapping on the Build number under About phone, you use the OK button at the center of the navigation cluter.

The developer menu will be buggy to scroll through.

Finding activities to launch

adb shell dumpsys package | grep Activity

Changing the launcher

The built-in launcher can be disabled with this command:

adb shell pm disable-user com.zte.slauncher

And re-enabled with this one

adb shell pm enable com.zte.slauncher

Installing a launcher is left as an exercise to the reader. Note that many launchers act weird if not entirely broken because of how the menu navigation is handled. Also note that the OTA updates may be cause of the weirdness I observed.

Simulating touches

adb shell input tap 20 20

Increasing (decreasing) density

Check the default

adb shell wm density

A good setting IMO:

adb shell wm density 128

Installing F-Droid

ADB will need to be active.

adb install org.fdroid.fdroid_*.apk

Allowing it to install packages (Android 10+) via ADB

Important here as the Z2335L does not allow changing the unknown sources setting.

adb shell appops set org.fdroid.fdroid REQUEST_INSTALL_PACKAGES allow
adb shell appops query-op REQUEST_INSTALL_PACKAGES allow

Since there is no way to launch the app from the OEM menu, launch it with this command:

adb shell am start -n org.fdroid.fdroid/.views.main.MainActivity

Better "remote" control

Use scrcpy! With it you can see some of the abstractions start to unravel. E.g. drag the status bar at the top and... THERE'S A FULL ANDROID NOTIFICATION TRAY!

"Soft keys" are broken

It seems that soft keys are handled either by the input subsystem, or apps themselves. Apps that don't handle the soft keys will get the last soft keys shown, and their actions. It's not only a cosmetic issue. Sometimes the key mapping is changed. Though most of the time it seems it will be KEYCODE_SOFT_LEFT and KEYCODE_SOFT_RIGHT.

Sometimes the accept or OK button, the center button, is totally unusable, caused by these mappings. A workaround is to open the volume menu, which will force OK as the main softkey action. Though once this is done, both side softkeys are now KEYCODE_UNKNOWN instead of the respective mapping.

This is one of the main breaking points; without stable input in all apps, there is no way to make the experience work well.

Getting a ROM dump

Search "391180B1108Z2335LV1.0.0B11" in your favourite search engine. It looks totally legit. Though AFAICT there is no way to install this to the device.

I say this looks legit because it matches 100% with what I was able to observe.

@benjaminpotter
Copy link

This was super helpful. Thank you!

@benjaminpotter
Copy link

Note for future users: Press CLR eight times to get a list of all downloaded apps.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment