{"repo":"feelfreelinux/octo4a","free":true,"listed":false,"github":"https://github.com/feelfreelinux/octo4a","clone":"git clone https://github.com/feelfreelinux/octo4a.git","description":"Use your old Android device as an OctoPrint server.","language":"Kotlin","stars":1785,"topics":["3d-printing","android","octoprint"],"license":"AGPL-3.0","category":"dev_tool","readme_excerpt":"# octo4a - Run OctoPrint on Android\n[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/feelfreelinux)\n![GitHub Sponsors](https://img.shields.io/github/sponsors/feelfreelinux)\n![IzzySoft](https://img.shields.io/endpoint?url=https://apt.izzysoft.de/fdroid/api/v1/shield/com.octo4a)\n\n\n![A banner visually expaining how the app works](.github/readme-banner.png)\n\nYou don't have a Raspberry Pi, but you want to control your 3D printer remotely? Use your phone as an octoprint host! With the Octo4a app you can install Octoprint on your android phone in minutes, without any special Linux knowledge.\n\n## Important note about charging and using OTG\n\nSome phones do not support simultaneous charging and USB on the go (OTG). Please consult this community contributed list of phones our users use, If you wish to buy a phone for the purpose of running octo4a:\n\nhttps://docs.google.com/spreadsheets/d/1pbKAELzvTrMVm6NpDpK8TfQR33w3QHQEgqkcGdbPFI0/edit?usp=sharing\n\nIf you have a phone that is not on the list, please add it and let us know if it works or not:\n\nhttps://forms.gle/cnTtdDqG3UcwTgnW9\n\n## Download\n\nNewest `.apk` files are available in the [releases page](https://github.com/feelfreelinux/octo4a/releases).\n\n## Usage\n\n1. Enable installing 3rd-party .apk in your phone's settings.\n2. Install the apk file downloaded from the releases page.\n3. Open the app.\n4. Click \"Install OctoPrint\" to download and install OctoPrint (needs working connection to internet & querries Google DNS servers 8.8.8.8 and 8.8.4.4)\n5. Allow the app to access the storage, if asked for permission.\n6. Wait for the installation to complete. This may take a long time, depending on your internet speed.\n7. Click \"Continue\" when the installation finishes.\n8. Optionally start the camera server to enable watching your printer from octoprint. \n9. Navigate to the IP address shown at the top in your browser to access and set-up OctoPrint.\n10. Happy printing!\n\n## Features\n\n- Quick and easy octoprint installation.\n- Printer connection via USB OTG. Thanks to our custom USB driver you can use octoprint even on phones without root access.\n- Built-in camera support. You can use the built-in camera in your phone to see the progress of your 3D prints, instead of buying a separate module. The app also supports  octolapse.\n- SSH support. You can easily log-in via ssh and customize your octoprint installation. \n\n## Wiki\n\nFAQ and many different topics are described in the [project's wiki](https://github.com/feelfreelinux/octo4a/wiki)\n\n## Video tutorials\n\nHere are some video tutorials made by the octo4a community that will help you with setting everything up:\n\n- [\"Octo4A - Octoprint On Your Android Phone - 2022 - Chris's Basement\"  by Chris Riley](https://www.youtube.com/watch?v=2Psbwc-NFTU)\n\n  [![Video tutorial by Chris Riley - thumbnail](https://img.youtube.com/vi/2Psbwc-NFTU/0.jpg)](https://www.youtube.com/watch?v=2Psbwc-NFTU)\n- [\"How to run OctoPrint on your phone!\"  by Thomas Sanladerer](https://www.youtube.com/watch?v=74xdib_-X38)\n\n  [![Video tutorial by Thomas Sanladerer - thumbnail](https://img.youtube.com/vi/74xdib_-X38/0.jpg)](https://www.youtube.com/watch?v=74xdib_-X38)\n- [\"Running OctoPrint on Android with Octo4a!\"  by Sumit Basra](https://www.youtube.com/watch?v=X56itQuqXY4)\n\n  [![Video tutorial by Sumit Basra - thumbnail](https://img.youtube.com/vi/X56itQuqXY4/0.jpg)](https://www.youtube.com/watch?v=X56itQuqXY4)\n\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n\n## Donating\n\nIf you like this project, feel free to [donate on PayPal](https://paypal.me/feelfreelinux) or [sponsor me on GitHub](https://github.com/sponsors/feelfreelinux). This project heavily relies on great work done on [OctoPrint](https://www.patreon.com/foosel) so please consider donating to them if you like this app. Thank you for your support :)\n\n## Disclaimer\n\n```\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```\n\nTL;DR: If your house burns down because this app malfunctioned, you cannot sue me.\n\n\n## License\n\nThis project is licensed under the AGPL license.\n","default_branch":"master","files":186,"tree":[".github/FUNDING.yml",".github/OTG-connection.png",".github/readme-banner.png",".github/workflows/build-app.yml",".gitignore","LICENSE.md","README.md","app/.gitignore","app/app/.cxx/ndk_locator_record_1e2102h1.json","app/app/.cxx/ndk_locator_record_1e2102h1_key.json","app/app/.gitignore","app/app/build.gradle.kts","app/app/proguard-rules.pro","app/app/src/androidTest/java/com/octo4a/ExampleInstrumentedTest.kt","app/app/src/main/AndroidManifest.xml","app/app/src/main/cpp/CMakeLists.txt","app/app/src/main/cpp/ioctl-hook.c","app/app/src/main/cpp/openpty.c","app/app/src/main/cpp/real_pty.h","app/app/src/main/cpp/util.h","app/app/src/main/cpp/vsp-pty.cpp","app/app/src/main/cpp/yuv2rgb.cpp","app/app/src/main/ic_launcher-playstore.png","app/app/src/main/java/com/octo4a/AppModule.kt","app/app/src/main/java/com/octo4a/BootReceiver.kt","app/app/src/main/java/com/octo4a/Octo4aApplication.kt","app/app/src/main/java/com/octo4a/camera/CameraEnumerationRepository.kt","app/app/src/main/java/com/octo4a/camera/CameraService.kt","app/app/src/main/java/com/octo4a/camera/LegacyCameraService.kt","app/app/src/main/java/com/octo4a/camera/MJpegServer.kt","app/app/src/main/java/com/octo4a/camera/MjpegResponse.kt","app/app/src/main/java/com/octo4a/camera/NativeCameraUtils.kt","app/app/src/main/java/com/octo4a/camera/RotateUtils.kt","app/app/src/main/java/com/octo4a/repository/BootstrapRepository.kt","app/app/src/main/java/com/octo4a/repository/ExtensionsRepository.kt","app/app/src/main/java/com/octo4a/repository/FIFOEventRepository.kt","app/app/src/main/java/com/octo4a/repository/GithubRepository.kt","app/app/src/main/java/com/octo4a/repository/LoggerRepository.kt","app/app/src/main/java/com/octo4a/repository/OctoPrintHandlerRepository.kt","app/app/src/main/java/com/octo4a/repository/SystemStatusRepository.kt","app/app/src/main/java/com/octo4a/serial/PrinterProber.kt","app/app/src/main/java/com/octo4a/serial/SerialData.kt","app/app/src/main/java/com/octo4a/serial/VSPListener.java","app/app/src/main/java/com/octo4a/serial/VSPPty.kt","app/app/src/main/java/com/octo4a/serial/VirtualSerialDriver.kt","app/app/src/main/java/com/octo4a/service/OctoPrintService.kt","app/app/src/main/java/com/octo4a/ui/BugReportingDialogExtension.kt","app/app/src/main/java/com/octo4a/ui/InitialActivity.kt","app/app/src/main/java/com/octo4a/ui/InstallationActivity.kt","app/app/src/main/java/com/octo4a/ui/MainActivity.kt","app/app/src/main/java/com/octo4a/ui/WebinterfaceActivity.kt","app/app/src/main/java/com/octo4a/ui/fragments/AboutFragment.kt","app/app/src/main/java/com/octo4a/ui/fragments/CameraPreviewDialogFragment.kt","app/app/src/main/java/com/octo4a/ui/fragments/ExtensionsFragment.kt","app/app/src/main/java/com/octo4a/ui/fragments/ServerFragment.kt","app/app/src/main/java/com/octo4a/ui/fragments/SettingsFragment.kt","app/app/src/main/java/com/octo4a/ui/fragments/TerminalSheetDialog.kt","app/app/src/main/java/com/octo4a/ui/views/ExtensionView.kt","app/app/src/main/java/com/octo4a/ui/views/IPAddressView.kt","app/app/src/main/java/com/octo4a/ui/views/InstallationProgressItem.kt","app/app/src/main/java/com/octo4a/ui/views/StatusView.kt","app/app/src/main/java/com/octo4a/ui/views/UsbDeviceView.kt","app/app/src/main/java/com/octo4a/utils/AnimationExtensions.kt","app/app/src/main/java/com/octo4a/utils/CancelableTimer.kt","app/app/src/main/java/com/octo4a/utils/Extensions.kt","app/app/src/main/java/com/octo4a/utils/ManualLifecycleOwner.kt","app/app/src/main/java/com/octo4a/utils/NoSSLv3SocketFactory.kt","app/app/src/main/java/com/octo4a/utils/Octo4aWakeLock.kt","app/app/src/main/java/com/octo4a/utils/ProcessUtils.kt","app/app/src/main/java/com/octo4a/utils/ProgressTrackingInputStream.kt","app/app/src/main/java/com/octo4a/utils/SemVer.kt","app/app/src/main/java/com/octo4a/utils/WaitableEvent.kt","app/app/src/main/java/com/octo4a/utils/preferences/MainPreferences.kt","app/app/src/main/java/com/octo4a/utils/preferences/Preferences.kt","app/app/src/main/java/com/octo4a/viewmodel/InstallationViewModel.kt","app/app/src/main/java/com/octo4a/viewmodel/NetworkStatusViewModel.kt","app/app/src/main/java/com/octo4a/viewmodel/StatusViewModel.kt","app/app/src/main/res/drawable-v24/ic_launcher_foreground.xml","app/app/src/main/res/drawable/cellular.xml","app/app/src/main/res/drawable/circle_drawable.xml","app/app/src/main/res/drawable/ethernet.xml","app/app/src/main/res/drawable/green_gradient.xml","app/app/src/main/res/drawable/ic_baseline_article_24.xml","app/app/src/main/res/drawable/ic_baseline_extension_24.xml","app/app/src/main/res/drawable/ic_baseline_heart_broken_24.xml","app/app/src/main/res/drawable/ic_chat_24px.xml","app/app/src/main/res/drawable/ic_close_24.xml","app/app/src/main/res/drawable/ic_code_24px.xml","app/app/src/main/res/drawable/ic_done_black_18dp.xml","app/app/src/main/res/drawable/ic_favorite_24px.xml","app/app/src/main/res/drawable/ic_help.xml","app/app/src/main/res/drawable/ic_info_24px.xml","app/app/src/main/res/drawable/ic_launcher_background.xml","app/app/src/main/res/drawable/ic_play_arrow_24px.xml","app/app/src/main/res/drawable/ic_print_24px.xml","app/app/src/main/res/drawable/ic_settings_24px.xml","app/app/src/main/res/drawable/ic_share_24.xml","app/app/src/main/res/drawable/ic_stop_24px.xml","app/app/src/main/res/drawable/ic_usb_24px.xml","app/app/src/main/res/drawable/ic_videocam_24px.xml","app/app/src/main/res/drawable/logo.png","app/app/src/main/res/drawable/red_gradient.xml","app/app/src/main/res/drawable/rounded_button.xml","app/app/src/main/res/drawable/rounded_dialog.xml","app/app/src/main/res/drawable/vpn.xml","app/app/src/main/res/drawable/wifi.xml","app/app/src/main/res/layout/activity_installation_progress.xml","app/app/src/main/res/layout/activity_landing.xml","app/app/src/main/res/layout/activity_main.xml","app/app/src/main/res/layout/activity_webinterface.xml","app/app/src/main/res/layout/bootstrap_spinner_view.xml","app/app/src/main/res/layout/dialog_camera_preview.xml","app/app/src/main/res/layout/extension_view.xml","app/app/src/main/res/layout/fragment_about.xml","app/app/src/main/res/layout/fragment_extensions.xml","app/app/src/main/res/layout/fragment_server.xml","app/app/src/main/res/layout/fragment_terminal_sheet.xml","app/app/src/main/res/layout/select_driver_bottom_sheet.xml","app/app/src/main/res/layout/view_installation_item.xml","app/app/src/main/res/layout/view_ip_address.xml","app/app/src/main/res/layout/view_status_card.xml","app/app/src/main/res/layout/view_usb_devices_item.xml","app/app/src/main/res/menu/main_appbar.xml","app/app/src/main/res/menu/nav_menu.xml","app/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml","app/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml","app/app/src/main/res/mipmap-hdpi/ic_launcher.png","app/app/src/main/res/mipmap-hdpi/ic_launcher_background.png","app/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png","app/app/src/main/res/mipmap-hdpi/ic_launcher_round.png","app/app/src/main/res/mipmap-mdpi/ic_launcher.png","app/app/src/main/res/mipmap-mdpi/ic_launcher_background.png","app/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png","app/app/src/main/res/mipmap-mdpi/ic_launcher_round.png","app/app/src/main/res/mipmap-xhdpi/ic_launcher.png","app/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png","app/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png","app/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png","app/app/src/main/res/mipmap-xxhdpi/ic_launcher.png","app/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png","app/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png","app/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png","app/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png","app/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png","app/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png","app/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png","app/app/src/main/res/navigation/navigation_graph.xml","app/app/src/main/res/raw/cacert","app/app/src/main/res/values/arrays.xml","app/app/src/main/res/values/attrs.xml","app/app/src/main/res/values/colors.xml","app/app/src/main/res/values/ids.xml","app/app/src/main/res/values/strings.xml","app/app/src/main/res/values/styles.xml","app/app/src/main/res/xml/device_filter.xml","app/app/src/main/res/xml/main_preferences.xml","app/app/src/test/java/com/octo4a/ExampleUnitTest.kt","app/build.gradle.kts","app/gradle.properties","app/gradle/wrapper/gradle-wrapper.jar","app/gradle/wrapper/gradle-wrapper.properties","app/gradlew","app/gradlew.bat","app/settings.gradle.kts","bootstrap-builder/build_bootstrap.sh","bootstrap-builder/dpkg_replacer.go","bootstrap-builder/fake_dpkg.sh","bootstrap-builder/go.mod","bootstrap-builder/go.sum","bootstrap-builder/properties.sh","bootstrap-builder/replace_paths.go","fastlane/metadata/android/en-US/changelogs/1000002.txt","fastlane/metadata/android/en-US/changelogs/1000003.txt","fastlane/metadata/android/en-US/full_description.txt","fastlane/metadata/android/en-US/images/icon.png","fastlane/metadata/android/en-US/images/phoneScreenshots/1.png","fastlane/metadata/android/en-US/images/phoneScreenshots/2.png","fastlane/metadata/android/en-US/images/phoneScreenshots/3.png","fastlane/metadata/android/en-US/short_description.txt","fastlane/metadata/android/en-US/title.txt","local.properties","scripts/comm-fix.py","scripts/setup-klipper-moonraker.sh","scripts/setup-klipper.sh","scripts/setup-octo4a.sh","scripts/setup-plugin-extras.sh"],"storefront":"/r/feelfreelinux","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/feelfreelinux/octo4a/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}