Droidspaces
Do you care if the APK size increases if we pack the Termux:X11, PulseAudio, and virglrenderer-android binaries directly into the app?
The final result would be a Termux-free Termux:X11, PulseAudio, and VirGL experience at the cost of bloat.
The final result would be a Termux-free Termux:X11, PulseAudio, and VirGL experience at the cost of bloat.
curl -fsSL https://github.com/ravindu644/Droidspaces-OSS/raw/refs/heads/dev/scripts/setup-termux.sh | bash
Run the above command inside Termux to configure it for Droidspaces. :)
What does it do?
1. Updates your Termux.
2. Installs the x11-repo package.
3. Installs virgl, termux-x11, and PulseAudio.
4. Patches the PulseAudio default.pa file to fix a deadlock that happens on some Android devices.
Edit: Always use the latest CI apks as they contain the latest fixes: @DroidspacesCI
🔥9
Do you know any reliable way to get audio working in containers?
Currently, the PulseAudio approach is very fragile. It sometimes works, and sometimes doesn't.
No denials, nothing.
The entire PulseAudio server gets deadlocked and unresponsive after ~5 minutes. Until then, audio works perfectly.
If we can't find a way to fix this issue, I'll remove the PulseAudio feature entirely, as we want reliability.
Currently, the PulseAudio approach is very fragile. It sometimes works, and sometimes doesn't.
No denials, nothing.
The entire PulseAudio server gets deadlocked and unresponsive after ~5 minutes. Until then, audio works perfectly.
If we can't find a way to fix this issue, I'll remove the PulseAudio feature entirely, as we want reliability.
A feature that doesn't exist is better than a broken implementation.
❤7🤯1
Droidspaces
Do you know any reliable way to get audio working in containers? Currently, the PulseAudio approach is very fragile. It sometimes works, and sometimes doesn't. No denials, nothing. The entire PulseAudio server gets deadlocked and unresponsive after ~5 minutes.…
I guess we fixed the PulseAudio deadlock bug. It's not even related to Droidspaces
Termux issues:
https://github.com/termux/termux-packages/issues/19861
https://github.com/termux/termux-packages/issues/19623
Try this CI: https://t.me/DroidspacesCI/504?single
It is required to run our setup script even if your Termux is already configured:
I worked almost 20 hours fixing an issue that doesn't even exist on our side.
I followed the fixes in these two issues, and it looks like it fixed the deadlock issue that only happens on some devices.
Termux issues:
https://github.com/termux/termux-packages/issues/19861
https://github.com/termux/termux-packages/issues/19623
Try this CI: https://t.me/DroidspacesCI/504?single
It is required to run our setup script even if your Termux is already configured:
curl -fsSL https://github.com/ravindu644/Droidspaces-OSS/raw/refs/heads/dev/scripts/setup-termux.sh | bash
I worked almost 20 hours fixing an issue that doesn't even exist on our side.
I followed the fixes in these two issues, and it looks like it fixed the deadlock issue that only happens on some devices.
❤15🔥3🫡3
This media is not supported in your browser
VIEW IN TELEGRAM
SteamOS on Droidspaces with native performance wen ? (jk)
Video credit: https://t.me/DroidspacesDiscussion/50418
Video credit: https://t.me/DroidspacesDiscussion/50418
🗿19❤1
I'll try to release Droidspaces v6.3.0 today.
It will be our most plug-and-play "it just works", zero-duct-tape Desktop experience ever!
What it means:
> You start your container
> The desktop environment automatically appears without you even touching anything or exporting any kind of environment variables.
It will be our most plug-and-play "it just works", zero-duct-tape Desktop experience ever!
What it means:
> You start your container
> The desktop environment automatically appears without you even touching anything or exporting any kind of environment variables.
❤28🗿6
Droidspaces v6.3.0 has been released! 🥳
Plus the usual round of translation updates, UI polish, and under-the-hood refactoring.
Full Changelog and Downloads:
https://github.com/ravindu644/Droidspaces-OSS/releases/tag/v6.3.0
@Droidspaces
- One-tap Termux:X11, VirGL, and PulseAudio setup - press start and your desktop environment appears. No manual configuration required.
- Fully migrated from magiskpolicy/droidspaces.te to sepolicy.rule.
- Fixed a bug where starting a container would spawn 6 extra PTYs on the host /dev/pts
- Fixed garbled characters in TUI-heavy apps when using daemon mode shell
- Fixed shell hang when pasting large amounts of text in daemon mode
- Fixed shell failing to attach on older 4.9 kernels
- Machine ID is now always generated on container installation
- Reduced app size by 4MB by replacing the bundled BusyBox with a custom minimal build
Plus the usual round of translation updates, UI polish, and under-the-hood refactoring.
Full Changelog and Downloads:
https://github.com/ravindu644/Droidspaces-OSS/releases/tag/v6.3.0
@Droidspaces
❤14🔥2
Droidspaces
Droidspaces v6.3.0 has been released! 🥳 - One-tap Termux:X11, VirGL, and PulseAudio setup - press start and your desktop environment appears. No manual configuration required. - Fully migrated from magiskpolicy/droidspaces.te to sepolicy.rule. - Fixed a bug…
Note:
You may need to uninstall the old APK before installing the new one due to changes in the app's version code scheme.
Previously, version 6.2.5 was registered with the version code 60205. However, following a refactor to sync the Magisk module version code, version 6.3.0 is now registered as 6300. Because Android blocks installing an update with a lower version code over an existing app, a manual uninstallation of the older version is required.
You may need to uninstall the old APK before installing the new one due to changes in the app's version code scheme.
Previously, version 6.2.5 was registered with the version code 60205. However, following a refactor to sync the Magisk module version code, version 6.3.0 is now registered as 6300. Because Android blocks installing an update with a lower version code over an existing app, a manual uninstallation of the older version is required.
👏8🗿2
There is an entire new document explaining how to use the new Termux:X11, VirGL, and PulseAudio features, as well as how to set up the Desktop Environment autoboot feature for advanced users. Go check it out 👀:
https://github.com/ravindu644/Droidspaces-OSS/blob/main/Documentation/Graphics-and-Audio.md
https://github.com/ravindu644/Droidspaces-OSS/blob/main/Documentation/Graphics-and-Audio.md
🔥12👍1🗿1
Guys, I want you to try this APK:
https://t.me/DroidspacesCI/519?single
Basically, we ditched the concept of "upstream interfaces" and made it fully automated.
That means Droidspaces will automatically detect which default route is currently active and use it as the upstream interface for internet access.
That means there is no need to point out interface names. Everything is fully automated, including real-time network interface change detection (like hopping between data and Wi-Fi).
The cherry on top is that we now support port forwarding in Hotspot/USB Tethering.
That means, on your Droidspaces server phone, you can toggle the Wi-Fi hotspot, connect your PC or another phone to that hotspot, and then access your services with gateway_ip:port!
Basically, I use it as a pocket Jellyfin server hotspot right now! 🗿
It's almost stable. It has been tested on almost 6 phones, and we found no issues.
However, testing is still appreciated.
https://t.me/DroidspacesCI/519?single
Basically, we ditched the concept of "upstream interfaces" and made it fully automated.
That means Droidspaces will automatically detect which default route is currently active and use it as the upstream interface for internet access.
That means there is no need to point out interface names. Everything is fully automated, including real-time network interface change detection (like hopping between data and Wi-Fi).
The cherry on top is that we now support port forwarding in Hotspot/USB Tethering.
That means, on your Droidspaces server phone, you can toggle the Wi-Fi hotspot, connect your PC or another phone to that hotspot, and then access your services with gateway_ip:port!
Basically, I use it as a pocket Jellyfin server hotspot right now! 🗿
It's almost stable. It has been tested on almost 6 phones, and we found no issues.
However, testing is still appreciated.
🔥15🗿4
Side project: VirtualAP
Turns your rooted Android phone into a full Wi-Fi router with custom gateway IPs, DNS servers, bands, channels, and port forwarding.
My setup: S10 as a pocket Jellyfin hotspot.
- Jellyfin runs inside Droidspaces with port 8096 forwarded
- VirtualAP creates a 5GHz hotspot with a custom gateway (
- Any device on the hotspot opens
An 80MB FLAC loads in under a second.
My primary router caps out at 12.5 MB/s. With VirtualAP, I can push over 100 MB/s over the direct link. Massive improvement for homelab use.
Bonus:
- Supports Wi-Fi to Hotspot mode. Connect to any Wi-Fi network and share it with others. Your phone acts as a repeater, no extra hardware needed.
- Supports VPN interfaces as upstream. Set tun0 from WireGuard as the upstream and every connected device is tunneled through the VPN automatically.
Check it out: https://github.com/ravindu644/VirtualAP/releases/latest
@Droidspaces
Turns your rooted Android phone into a full Wi-Fi router with custom gateway IPs, DNS servers, bands, channels, and port forwarding.
My setup: S10 as a pocket Jellyfin hotspot.
- Jellyfin runs inside Droidspaces with port 8096 forwarded
- VirtualAP creates a 5GHz hotspot with a custom gateway (
67.67.69.69)- Any device on the hotspot opens
67.67.69.69:8096 and gets Jellyfin instantlyAn 80MB FLAC loads in under a second.
My primary router caps out at 12.5 MB/s. With VirtualAP, I can push over 100 MB/s over the direct link. Massive improvement for homelab use.
Bonus:
- Supports Wi-Fi to Hotspot mode. Connect to any Wi-Fi network and share it with others. Your phone acts as a repeater, no extra hardware needed.
- Supports VPN interfaces as upstream. Set tun0 from WireGuard as the upstream and every connected device is tunneled through the VPN automatically.
Check it out: https://github.com/ravindu644/VirtualAP/releases/latest
@Droidspaces
🔥18❤5
We did it!
A Wi-Fi hotspot managed by an OpenWRT container using Droidspaces on an Android phone!
It's still a proof of concept, but it has a lot of use cases and fits our philosophy perfectly 😉
The VirtualAP project was just an experiment to mess around with AP creation on Android.
This is the real thing we wanted 🗿
@Droidspaces
A Wi-Fi hotspot managed by an OpenWRT container using Droidspaces on an Android phone!
It's still a proof of concept, but it has a lot of use cases and fits our philosophy perfectly 😉
The VirtualAP project was just an experiment to mess around with AP creation on Android.
This is the real thing we wanted 🗿
@Droidspaces
🔥26🎉4
Droidspaces x OpenWRT x VirtualAP integration!
This is our final goal!
Making the device into a fully functional Wi-Fi router.
VirtualAP is just a middleman whose only purpose is creating the hotspot.
OpenWRT has the full freedom to manage the vaplan0 interface inside its own isolated network namespace, as well as nft/iptables and firewall rules, with DHCP and DNS 🗿
OpenWRT never touches your phone's hardware. No more kernel panics!
Testing:
https://github.com/ravindu644/VirtualAP/releases/tag/v1.4.0
Notes: We'll ship a custom OpenWRT rootfs. Until then, iptables-legacy must be installed inside your OpenWRT container to do this :)
@Droidspaces
This is our final goal!
Making the device into a fully functional Wi-Fi router.
VirtualAP is just a middleman whose only purpose is creating the hotspot.
OpenWRT has the full freedom to manage the vaplan0 interface inside its own isolated network namespace, as well as nft/iptables and firewall rules, with DHCP and DNS 🗿
OpenWRT never touches your phone's hardware. No more kernel panics!
Testing:
https://github.com/ravindu644/VirtualAP/releases/tag/v1.4.0
Notes: We'll ship a custom OpenWRT rootfs. Until then, iptables-legacy must be installed inside your OpenWRT container to do this :)
@Droidspaces
🔥21❤8👏1