# TrollSpeed: a network speed readout that lives in the status bar

> TrollSpeed is an iOS tweak that shows upload and download speed just below the status bar, built for TrollStore rather than for a jailbroken device, which changes the whole architecture: the app spawns a privileged helper to draw the overlay and the tweak observes its own removal to tear that helper down. The README explains the mechanism in three lines, and they are worth reading closely.

**Lessica/TrollSpeed** — Shows upload & download speed below the status bar. Supports opa334’s TrollStore.

- Repository: https://github.com/Lessica/TrollSpeed
- Website: https://havoc.app/package/trollspeed
- Stars: 850 · Forks: 76
- Language: Objective-C++
- License: MIT
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/lessica-trollspeed

## What it does and where it runs

TrollSpeed shows upload and download speed below the status bar, and the README notes it is tested and expected to work on all iOS versions supported by opa334's TrollStore. That last clause matters more than it sounds, because it tells you the compatibility target is the set of devices TrollStore itself supports rather than a fixed iOS version list. The project is a tweak, published on Havoc under the name TrollSpeed, with the homepage at the Havoc package page. It is written in Objective-C++ and Swift, carries the MIT licence, and the recent releases show it still being maintained, with v2.0-13 in April 2026 after a long gap from v1.12.1 in mid 2024.

## Three projects and some magic

The How it works section is the most instructive part of the README, because it explains the architecture in one equation: TrollStore plus UIDaemon plus NetworkSpeed13 plus some magic. Then three bullets unpack it. There is a TrollStore app to spawn a HUD process with root privilege. There is the instruction not to call waitpid on that process, to let it go, which is a process-management detail that saves a class of bug when the parent exits. And there is a HUD app with entitlements from assistivetouchd, used to display and persist global windows. So the speed readout is not drawn by the tweak itself but by a separate privileged helper, and the reason is that a global overlay above other applications requires privileges the tweak does not have.

## Building it with theos or with Xcode

There are two build paths. The first uses theos, and the whole build is one make invocation with an environment variable.

```bash
FINALPACKAGE=1 make package
```

The result is a .tipa file in the ./packages folder. If you would rather not use theos, there is a build.sh script that builds with Xcode instead. The Makefile in the repository shows how much configuration is involved in either case. It sets the architecture to arm64, the target to iphone with clang 16.5 and an iOS 14.0 SDK, and it points at an entitlements plist and a launch daemon plist. The sources are assembled from several directories, with Objective-C++ and Objective-C files from the sources directory, Swift files from the root sources directory, and separate directories for the KIF, SPLarkController and SnapshotSafeView components.

## The makefile reveals the deployment shape

The Makefile is worth reading because it describes how the thing installs itself. There is an INSTALL_TARGET_PROCESSES variable naming TrollSpeed, an ENT_PLIST pointing at the entitlements file, and a LAUNCHD_PLIST pointing at a launch daemon plist inside the layout directory, at ch.xxtou.hudservices.plist. The application is built as an application target with theos, and a prefs subproject is always included, while a memory_pressure subproject is included only when the build is not the final package. The frameworks list names CoreGraphics, CoreServices, QuartzCore, IOKit and UIKit, with private frameworks for BackBoardServices, GraphicsServices and SpringBoardServices, and the code signs with the entitlements file. The before-all rule writes the application path into the launch daemon's ProgramArguments, which is how the privileged helper is told what to launch.

## The two caveats that decide whether it works

The Caveats section is short and each line is a behavioural fact. Spawning with root privileges is required, and otherwise the HUD process will be killed by SpringBoard when unlocking the device. That is a direct consequence of the architecture: a global overlay that survives a lock screen has to outlive the foreground app, and only a privileged process does that. The second line is the reverse mechanism. TrollSpeed will observe its app removal and terminate its HUD, so uninstalling the app takes the overlay with it rather than leaving a stray process drawing over your home screen. That is a courtesy, and it is also the reason the tweak watches for its own removal, which is a slightly unusual thing for a system extension to do.

## The upstream projects it borrows from

The Special Thanks section names the projects the code is built on and credits the people behind them, which is a good map for anyone wanting to understand the pieces. KIF comes from the KIF framework, and SPLarkController from Ivan Vorobei, which is the Spark status bar library. TrollStore itself is credited to opa334dev, UIDaemon to limneos, and NetworkSpeed13 to johnzarodev, and that last one is the actual speed calculation. SnapshotSafeView is credited to Ilya knyazkov. The README also notes a separate thanks to the KIF and SPLarkController contributors for the screenshots. So the speed logic, the overlay, the privileged daemon and the status bar integration are four separate upstream efforts, and TrollSpeed is the integration layer plus the TrollStore packaging.

## The repository layout and the localisation habit

The top-level listing shows the parts of the iOS ecosystem a tweak of this kind touches: Resources for the bundled assets and localisations, sources for the main implementation, headers, libraries for vendored code, libroot for the rootless-specific sources, prefs for the settings bundle, devkit, layout for the on-device file layout including the launch daemon, and supports for the entitlements and the prefix header. There are also build.sh, a Makefile, get-version.sh, gen-control.sh, a CHANGELOG and a Gemfile with a lock file, which suggests the version and control metadata are generated by scripts rather than by hand. The localisation convention is documented at the end: to add a language you create a new .lproj folder in Resources, and the README lists what exists, English and Simplified Chinese from Lessica and Spanish from Deci8BelioS.

## Where TrollSpeed is the wrong choice

Four limits apply. It requires a device that TrollStore can install onto, which in practice means an older iOS version or a specific exploit path, and it is therefore a tool for a shrinking population of devices rather than for current hardware. It runs a root-privileged background process permanently, and a permanent privileged process on a phone is a security posture you have to accept, not just a feature. It depends on four upstream projects moving in step, and when the SpringBoard private frameworks change under it, the tweak breaks and the fix depends on someone else publishing a new version. And it does one thing, showing two numbers, so a network statistics tool from the App Store will serve most people without any of this.

## Conclusion

Use TrollSpeed if you want a persistent throughput readout on a jailbreak-free iOS device and you are comfortable with a tweak that runs a privileged background process, because that is the only way the overlay can survive a locked screen. Do not install it on a device where a root-spawning companion process is not acceptable, since the README states that spawning with root privileges is required. Verify first that your iOS version is one TrollStore supports, since the project is tested and expected to work on all iOS versions TrollStore supports, and that you read the two caveats, since the HUD is killed by SpringBoard on unlock without root and the tweak terminates the HUD when its own app is removed.

## FAQ

### What does TrollSpeed do?

It shows upload and download speed just below the status bar on iOS. It is built for TrollStore rather than for a jailbroken device, and it is tested and expected to work on all iOS versions supported by TrollStore.

### How does TrollSpeed show a speed readout above other apps?

It uses TrollStore, UIDaemon and NetworkSpeed13. A TrollStore app spawns a HUD process with root privilege, the tweak does not call waitpid on it, and a HUD app with entitlements from assistivetouchd displays and persists the global windows.

### How do I build TrollSpeed?

With theos, using FINALPACKAGE=1 make package, which produces a .tipa file in the packages folder. Alternatively the repository ships a build.sh script that builds with Xcode instead. The Makefile targets arm64 with clang 16.5 and an iOS 14.0 SDK.

### What are the known caveats of TrollSpeed?

Spawning with root privileges is required, because otherwise the HUD process is killed by SpringBoard when unlocking the device. The other caveat is that TrollSpeed observes its own app removal and terminates its HUD when the app is deleted.

### How do I add a new language to TrollSpeed?

Create a new .lproj folder in the Resources directory. The README lists the existing localisations as English and Simplified Chinese from Lessica and Spanish from Deci8BelioS.

## Sources

- [Lessica/TrollSpeed on GitHub](https://github.com/Lessica/TrollSpeed)
- [License: MIT](https://github.com/Lessica/TrollSpeed/blob/main/LICENSE)
- [Project website](https://havoc.app/package/trollspeed)
- [README](https://github.com/Lessica/TrollSpeed/blob/main/README.md)
- [Releases](https://github.com/Lessica/TrollSpeed/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/lessica-trollspeed
