phyphox-android turns a phone's sensors into physics experiments
Physical Phone Experiments
At a glance
- What is it?
- phyphox-android is the Android source of phyphox, an app from RWTH Aachen University that uses a phone's sensors for physics experiments and ships the experiment definitions with the app. It suits a teacher or student who wants to measure something rather than read about it, and the repository makes clear that the app is maintained by people who are not professional developers.
- Who is it for?
- Adopt phyphox-android when you want to build or extend a phone based physics experiment for classroom use, or when you need to understand how the experiment file format and the sensor pipeline fit together in a mature, widely used app. Do not expect modern Android engineering practice in the codebase, because the README says plainly that much of it is not best practice because students and researchers maintain it.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 4 days ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
An app built for measuring, made by physicists
Phyphox is an app that uses the sensors in a smartphone for physics experiments, with additional details and examples on the phyphox site. The copyright line names Dr. Sebastian Staacks of the 2nd Institute of Physics at RWTH Aachen University, and the project states it was created at that university and has been released under the GNU General Public Licence since version 1.1.0. That origin explains a lot about the shape of the project. A physics institute needs an app its students can use to measure acceleration, or magnetic field, or sound level, and to look at the data while the experiment is happening rather than after it. It also explains the trading of polish for reach, since the app is distributed through F-Droid and Google Play and is used in schools around the world, so it needs to work on the cheap Android hardware that classrooms actually have. The names phyphox and RWTH Aachen University, along with the RWTH Aachen logo, are registered trademarks, which is worth noting if you plan to fork it under a different name.
The code is deliberately not best practice, and says so
There is a coding style section in the README, and it is unusual enough to be worth quoting closely. The app and all of its parts are developed by students and researchers who do not necessarily have a software development background, so you will find many passages in the code that are not best practice, and any help in improving the code is welcome. That sentence is a design decision stated as a fact, and it changes how you should approach a contribution. The codebase is not going to reward an idiomatic rewrite, because the people maintaining it are the same people who wrote it in the first place and they are maintaining it between other work. What the project actually wants is incremental improvement, and the invitation is explicit. The primary language listed for the repository is C, and the repository layout shows a Gradle project with an app/ directory, build.gradle, settings.gradle, gradle.properties, the gradle/ directory, the gradlew and gradlew.bat wrapper scripts, a fastlane/ directory for the store releases, and a tools/ directory. There is also a Screengrabfile at the root, which is the store screenshot definition.
One app, five repositories, and a subrepository for the content
The structure section is the most practical part of the README for anyone who wants to work on phyphox, because the project is spread across several repositories and picking the wrong one wastes your time. This repository, phyphox-android, holds the Android source and includes phyphox-experiments and phyphox-webinterface as subrepositories. phyphox-experiments holds the experiment definitions that are provided with the app, so the content and the code that renders it live apart. phyphox-ios is the iOS source and it too includes those two as subrepositories, which is how the same experiment set reaches both platforms. phyphox-translation holds the translations from the experiment definitions and the app store entries, and it is synchronized manually to the experiments repository through a Python script, with its main purpose being to conveniently provide translatable resources to the translation system. phyphox-webeditor is the browser based editor for creating and modifying phyphox experiment files in a GUI, and phyphox-webinterface is the web interface served by the webserver in the app when the remote access feature is turned on. The .gitmodules file at the root of this repository is the mechanism behind those subrepository references.
Branch policy exists because translations need a stable base
The branches section describes a four way branching scheme, and the reason for the fourth branch is the interesting part. The code of the most recent published version is kept in master, while minor development is done in development. Larger changes and long term development happen in additional branches, which at some point converge in a dev-next branch. And in some repositories there is also a translation branch, which usually is identical or very close to the current development or dev-next branch and is linked to the translation system in order to control when the translators are able to work on new text passages. So the branches are not just a release cadence, they are a way of protecting translators. A string in development can be changed freely, but a string in the translation branch is one a translator has already committed time to, so the branch is where that work becomes stable. The last push was on 2026-10-19 and the most recent release is v1.2.1, published on 2026-09-04, with no other tags listed, which suggests the tag cadence is not fast.
Contributing means accepting the classroom as a stakeholder
The contributing section states that any contribution is encouraged, and then lists the constraints, and the constraints are all about the people already using the app. Be careful about changes to the UI, because many teachers rely on a simple and consistent workflow without too much distraction for their students, and they might have created worksheets which need updates when the interface changes, so the guidance is to add new features in a simple and lean way. The second constraint is cross platform parity. Android and iOS versions should remain as similar as possible, and slight UI variations are accepted if they follow the obvious design standards of each platform, for example checkmarks on Android but buttons telling the action on iOS, or a FAB on Android and an Actionbar entry on iOS. One version might get features that are impossible on the other, such as reading the light sensor on Android, which cannot be done on iOS, or getting the number of satellites for GPS on Android. But if you provide a new feature that can be implemented on the other platform as well, it will not be included in the final app until somebody has ported it there too. The third constraint is that translation is not done through git directly, so you contact the maintainers and they set up an account on the translation system. And the final advice is to get in touch first if you plan more than a small bugfix or optimisation.
Four third party libraries, each with a licence decision attached
The used libraries section is unusually detailed for a mobile app README, and it is where the licensing positions are recorded. FFTW is used to calculate Fourier transformations, and it is distributed under the GNU General Public Licence, v2 or newer, so phyphox uses v3 to stay compatible with its own licence. jlhttp is used to create the webserver for the remote access feature, and it is also under the GNU General Public Licence, with a thank you to Amichai R. for the library and for migrating phyphox to it. ZXing, the Zebra Crossing library, is used to read QR codes and is licensed under the Apache Licence v2, and the README reproduces the notices for Barcode4J and JCommander that come with it. The Android version's MQTT communication uses the MQTT Android Service by Hannes Achleitner under Apache Licence 2.0, which in turn uses the Eclipse Paho MQTT library under the Eclipse Distribution Licence 1.0. So the app mixes GPL, Apache and Eclipse licences, and the GPL components are there for reasons that are technical rather than incidental, FFTW for the transforms and jlhttp for the server.
Editorial conclusion
Adopt phyphox-android when you want to build or extend a phone based physics experiment for classroom use, or when you need to understand how the experiment file format and the sensor pipeline fit together in a mature, widely used app. Do not expect modern Android engineering practice in the codebase, because the README says plainly that much of it is not best practice because students and researchers maintain it. Verify first which branch your change belongs on, since master holds the published version and development holds minor work, that a change you plan can also be implemented on iOS, because the project will not ship an Android-only feature, and that the experiment definitions live in a separate repository rather than in this one.
Frequently asked questions
What is phyphox and who builds it?
Phyphox is an app that uses the sensors in a smartphone for physics experiments. It was created at RWTH Aachen University, with copyright 2016 Dr. Sebastian Staacks of the 2nd Institute of Physics, and has been released under the GNU General Public Licence since version 1.1.0.
Where do the phyphox experiment definitions live?
In a separate repository, phyphox-experiments, which is included as a subrepository in both the Android and the iOS repositories. phyphox-android also includes phyphox-webinterface as a subrepository, and the overarching documentation for the file format and the REST API is in the project wiki on phyphox.org.
Can I add a feature that only works on Android?
Not in the shipped app. Features that cannot exist on the other platform are accepted, such as reading the light sensor on Android or getting the number of GPS satellites on Android, but a feature that could be implemented on both platforms is not included in the final app until somebody has ported it, because teachers should not have to explain the usage of phyphox twice.
How do I contribute a translation to phyphox?
Not through git directly. You contact the maintainers and they set up an account for you on the translation system. The translation branch in the repositories exists to control when translators are able to work on new text passages.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/phyphox-phyphox-android)Was this useful?