Print server
Turn an old USB printer into a network printer: web/QR upload, IPP, AirPrint; driver matched by model.
TV-box repurposing · robot open source
Getting-started reading for both projects: principles, workflow, modules and safety limits.
This page is an introduction only — no downloads; packages and source live on the project pages.
The idea is not to replace Android. We keep the stock system and run an Ubuntu subsystem (chroot) under /data; services live inside it, while IPTV, remote and serial functions stay intact. Delete the subsystem to revert.
adb on your computer.adb connect <box-ip>:5555, confirm with adb devices./data. Boxes have little storage and RAM; check free space first, and do not keep the only copy of important data on the box.Turn an old USB printer into a network printer: web/QR upload, IPP, AirPrint; driver matched by model.
aria2 downloads (magnet/BT/direct) + Samba share; external USB disk preferred, internal storage as fallback.
USB camera live view + 30-second loop recording + remote viewing; optional motion detection, object detection and alerts.
8 native mini-games plus study/exam/tutorial modes; 1–9 players on one screen, phone as a gamepad.
Native desktop + Firefox + Chinese input + LAN transfer + USB storage; enough for browsing, video and light office work.
Boots into the song-request screen; local/USB library + online search; karaoke lyrics; remote, mouse or phone control.
Box as a LAN DNS (AdGuard Home): block ads and trackers for every device with one setup.
A simple desktop for primary-school kids: browser/files/settings, no password for settings, desktop web pages, no on-screen keyboard pop-up.
Flashing replaces the whole system (brick risk, loses stock features). chroot runs an Ubuntu subsystem beside the stock system; the stock system is untouched and you can delete the directory to revert.
Old boxes often have ~1 GB for /data, which fills up with a subsystem and big apps. /sdcard is a separate, usually larger partition; symlink caches/data there or add a USB disk.
A launcher/foreground app as HOME, or a service started from a boot script. The exact entry differs per model; see the kit page.
Uninstall the app/service, re-enable apps disabled with pm disable, then remove the subsystem and autostart script. Since boot/system partitions are untouched, no reflash is needed.
Using the Ecovacs BaJie robot as the reference: a complete control and data path Jetson host → adb → chroot → ssh → ROS 2 lower board, running a 3D digital twin, console, vision/voice, grasping, data collection and training analysis. This tutorial covers principles and steps; source lives on the Robot page. More brands/models will be added.
Console and 3D pages (:8790), joint bridge (:8796), mode service (:8795), two camera streams (:8799/:8800).
adb to the robot upper board (5555) → chroot Ubuntu → ssh to the lower board → ROS 2 topics. Trajectories and streaming jog use this path.
Publishes /joint_states, subscribes to /arm_controller/joint_trajectory; lift, gripper and head have their own scripts.
Head + wrist camera streams; collect episodes, annotate targets, record limit points, then analyse in the training dashboard.
serve.sh set the directory, ADB, ROBOT_HOST, ROBOT_PW and LOWER_IP.bash serve.sh, open http://<jetson-ip>:8790/robot_home.html.lower/jogd there and run jtstream.py; confirm /joints has data.Real mode by default. If the robot stays offline for ~10 s, the console switches to local mode (pages remain usable). In local mode, if adb 5555 becomes reachable and stable for a few seconds, it switches back automatically; a manual local mode never auto-returns.
When the upper arm is close to the column, extending or unfolding directly can hit it. Move to a side-swing pose with more clearance, confirm the gap, then go to the target. The system skips this step when the path is already safe.
Rotate the arm around a fixed tool-tip point while the tip position stays unchanged; the tool axis is limited relative to the start orientation so the wrist camera does not flip. Useful to look at one target from different angles.
Approaching from the side or below can hit the table edge, push the object away and hurt camera localisation. Raise the lift column above the table first, move to a pre-grasp pose (≥ table + 12 cm), then approach top-down; keep fingertips at least 1 cm above the table.
Collect episodes at fixed points → annotate grasp/placement → record tip limit points → inspect quality and replay in the dashboard → train → validate with the test plan. Each step has a page and a data format.
The 3D page needs WebGL. On machines without hardware GL (some Chromium / remote desktops) use Firefox, or launch the browser with software-rendering flags; on Jetson desktop, Firefox is recommended.