Subcategories

  • This section is specifically useful for new contributors on the project

    7 Topics
    1 Posts
    DiogoD
    This Category is for those starting to contribute for the UBports Project and Community. By contributing, we mean doing things like: coding quality assurance (testing, bug reporting and validation, etc...) translations app development and maintenance writing and validating technical documentation and user manuals UBports social media and marqueting etc... If you want to contribute in these ways or others and have questions about it, like how to get started, where can you find information, please leave your questions in this category and we will try to answer them the best we can.
  • Discuss and solve problems with other users

    90 Topics
    645 Posts
    developerbaymanD
    @bearbobs sorry for the late reply its been busy with work...did you have to host the emulationstation?....because not sure how to host from within a clickable.....Iv seen the project before but have not really done anything with it....if it runs totally client side its do able....but if it needs hosting I don't think it can be done....the nes I'm working on is a heavily modded JavaScript emulator runs totally client side i added touch support fixed up the audio and added a lot of mapper support.....one big issue is the webview out of the box is....well lacking...if you load mario you will see black squares around the clouds and other sprites...not the emulator but the webview....
  • 133 Topics
    934 Posts
    developerbaymanD
    @captainfunk try this #!/bin/bash # # Usage: # To install and set up: ./waydroid_shared_folder.sh --install # To perform mount only: ./waydroid_shared_folder.sh --mount (used by cron) # To perform chown only: ./waydroid_shared_folder.sh --chown (used by cron) # To uninstall: ./waydroid_shared_folder.sh --uninstall # To display help: ./waydroid_shared_folder.sh --help # # --- Configuration --- # Define the paths for the shared folders. # ~/shared is the folder on your Ubuntu Touch host that you will use. SHARED_DIR_HOST="$HOME/shared" # ~/.local/share/waydroid/data/media/0/shared is the corresponding folder inside Waydroid. SHARED_DIR_WAYDROID="$HOME/.local/share/waydroid/data/media/0/shared" # The primary user on Ubuntu Touch. USER_PHABLET="phablet" # The name of this script, used for cron job identification. SCRIPT_NAME=$(basename "$0") # The absolute path to this script, essential for cron to execute it correctly. SCRIPT_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd)/$SCRIPT_NAME" # --- Functions --- # Function for logging messages to stdout with a timestamp. log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" } # Function to create the necessary shared directories if they don't exist. create_directories() { log "Creating shared directories..." # Create the host shared directory. mkdir -p "$SHARED_DIR_HOST" # Create the Waydroid internal shared directory path. mkdir -p "$SHARED_DIR_WAYDROID" if [ $? -eq 0 ]; then log "Directories created successfully." else log "Error creating directories. Please check permissions or disk space. Exiting." exit 1 fi } # Function to perform the bind mount operation. perform_bind_mount() { log "Attempting to bind mount '$SHARED_DIR_HOST' to '$SHARED_DIR_WAYDROID'..." # Check if the Waydroid shared folder is already mounted to avoid errors. if mountpoint -q "$SHARED_DIR_WAYDROID"; then log "Folder '$SHARED_DIR_WAYDROID' is already mounted. Skipping bind mount." else # Use sudo to perform the bind mount, linking the host folder to the Waydroid folder. sudo mount --bind "$SHARED_DIR_HOST" "$SHARED_DIR_WAYDROID" if [ $? -eq 0 ]; then log "Bind mount successful." # Immediately set initial permissions after a successful mount. set_folder_permissions else log "Error: Bind mount failed. This could be due to incorrect paths, Waydroid not running, or insufficient sudo permissions." log "Ensure Waydroid is running and '$SHARED_DIR_WAYDROID' exists inside its 'data/media/0' structure." exit 1 fi fi } # Function to unmount the shared folder. unmount_folder() { log "Attempting to unmount '$SHARED_DIR_WAYDROID'..." # Check if the folder is currently mounted before attempting to unmount. if mountpoint -q "$SHARED_DIR_WAYDROID"; then # Use sudo to unmount the folder. sudo umount "$SHARED_DIR_WAYDROID" if [ $? -eq 0 ]; then log "Unmount successful." else log "Error unmounting folder. This may happen if files inside are in use." log "You might need to manually unmount or reboot if it persists." exit 1 fi else log "Folder '$SHARED_DIR_WAYDROID' is not mounted. Skipping unmount." fi } # Function to set the ownership of the shared folder and its contents. set_folder_permissions() { log "Setting permissions for '$SHARED_DIR_WAYDROID' to '$USER_PHABLET:$USER_PHABLET'..." # Use sudo and the -R (recursive) flag to ensure all files and subdirectories # within the mounted shared folder are owned by the 'phablet' user. # This directly addresses the issue of Waydroid changing ownership. sudo chown -R "$USER_PHABLET":"$USER_PHABLET" "$SHARED_DIR_WAYDROID" if [ $? -eq 0 ]; then log "Permissions set successfully." else log "Error setting permissions. Check sudo permissions or ensure the path '$SHARED_DIR_WAYDROID' is valid." exit 1 fi } # Function to add cron jobs for persistence and continuous permission management. add_cron_jobs() { log "Adding cron jobs for persistence and continuous permission management..." # Get current crontab, add new entries, sort, remove duplicates, then set new crontab. # @reboot: Executes the script with '--mount' option every time the device reboots. # * * * * *: Executes the script with '--chown' option every minute to correct permissions. (crontab -l 2>/dev/null; \ echo "@reboot /bin/bash \"$SCRIPT_PATH\" --mount"; \ echo "* * * * * /bin/bash \"$SCRIPT_PATH\" --chown" \ ) | sort | uniq | crontab - if [ $? -eq 0 ]; then log "Cron jobs added successfully." log "They will run from this script's current location: $SCRIPT_PATH" log "IMPORTANT: Do NOT move or rename this script after installation, or the cron jobs will fail." log "You can verify the cron jobs by running: crontab -l" else log "Error adding cron jobs. This could be a cron service issue." exit 1 fi } # Function to remove cron jobs added by this script. remove_cron_jobs() { log "Removing cron jobs related to this script..." # List current cron jobs, filter out lines containing this script's path, and set the new crontab. crontab -l 2>/dev/null | grep -v "$SCRIPT_PATH" | crontab - if [ $? -eq 0 ]; then log "Cron jobs removed successfully. You can verify by running: crontab -l" else log "Error removing cron jobs. You may need to manually edit your crontab (crontab -e)." exit 1 fi } # Function to display the help message. display_help() { echo "Usage: $SCRIPT_NAME [OPTION]" echo "" echo "This script automates setting up and managing a shared folder between Ubuntu Touch and Waydroid." echo "" echo "Options:" echo " --install Performs initial setup: creates directories, mounts the folder," echo " sets initial permissions, and adds cron jobs for persistence and" echo " continuous permission handling. Run this command once to set up." echo "" echo " --mount Performs only the bind mount operation and sets initial permissions." echo " This option is primarily used by the '@reboot' cron job for persistence." echo "" echo " --chown Recursively sets permissions for the shared folder and its contents" echo " to 'phablet:phablet'. This option is used by the periodic cron job" echo " to automatically correct permissions changed by Waydroid." echo "" echo " --uninstall Removes the cron jobs added by this script and unmounts the shared folder." echo " This cleans up the setup." echo "" echo " --help Display this help message." echo "" echo "Important Notes:" echo " - This script assumes you are running it as the 'phablet' user on Ubuntu Touch." echo " - It relies on 'sudo' for mount and chown commands. The 'phablet' user typically has" echo " passwordless sudo access configured by default on Ubuntu Touch." echo " - After running '--install', a reboot is recommended to ensure the @reboot cron job fires." echo " - Do not move or rename this script after installation, as the cron jobs rely on its path." echo " - While '/etc/fstab' is a common Linux method for persistence, it's generally not recommended" echo " for user-level modifications on Ubuntu Touch due to its read-only root filesystem and OTA updates." echo " Using user-specific cron jobs provides a safer and more robust solution here." } # --- Main Logic --- # Check if the script is being run as root. It should be run as the regular user (phablet). if [[ $EUID -eq 0 ]]; then log "Error: This script should NOT be run directly with 'sudo'." log "Please run it as the '$USER_PHABLET' user (e.g., just './$SCRIPT_NAME --install')." log "The script will use 'sudo' internally where necessary." exit 1 fi # Check for essential commands required by the script. if ! command -v crontab &> /dev/null; then log "Error: 'crontab' command not found. Please ensure cron is installed and available." exit 1 fi if ! command -v mountpoint &> /dev/null; then log "Error: 'mountpoint' command not found. Please ensure it's installed (usually part of 'util-linux')." exit 1 fi # Process command-line arguments. case "$1" in --install) log "Initiating installation process..." create_directories # Create the required host and Waydroid directories. perform_bind_mount # Perform the initial bind mount. add_cron_jobs # Set up cron jobs for persistence and auto-chown. log "Installation complete. Please reboot your Ubuntu Touch device for all changes to take full effect." log "The shared folder will now be persistent across reboots, and permissions will be automatically corrected." ;; --mount) log "Executing mount operation (likely from @reboot cron job)..." create_directories # Ensure directories exist (in case they were deleted). perform_bind_mount # Perform the bind mount. ;; --chown) log "Executing chown operation (likely from periodic cron job)..." # Only attempt chown if the target directory exists and is mounted. if [ -d "$SHARED_DIR_WAYDROID" ] && mountpoint -q "$SHARED_DIR_WAYDROID"; then set_folder_permissions # Correct the permissions recursively. else log "Shared Waydroid directory '$SHARED_DIR_WAYDROID' not found or not mounted. Skipping chown for now." log "This might happen if Waydroid is not running or if the mount failed." fi ;; --uninstall) log "Initiating uninstallation process..." remove_cron_jobs # Remove the cron jobs. unmount_folder # Unmount the shared folder. log "Uninstallation complete. You may manually remove the '$SHARED_DIR_HOST' directory if no longer needed." ;; --help) display_help # Show the help message. ;; *) log "Invalid option: '$1'" display_help exit 1 ;; esac log "Script execution finished."
  • View partitions

    Moved Unsolved
    5
    0 Votes
    5 Posts
    623 Views
    AppLeeA
    @aloys No really on the PC. But if that's what OP meant there is also possibility using SSH or even directly in the terminal of the device...
  • Ubuntu touch dual booting with Volla os

    Moved
    3
    0 Votes
    3 Posts
    322 Views
    P
    @lakotaubp oh OK, thank you, kind sir!
  • This topic is deleted!

    Unsolved
    2
    0 Votes
    2 Posts
    36 Views
    No one has replied
  • NFC payment ?

    Unsolved
    3
    0 Votes
    3 Posts
    2k Views
    T
    Waydroid might give some alternative apps if that's an option for you. Also not quite what you are asking for but Waydroid had made it possible to run a Bitcoin Lightning wallet on Ubuntu Touch. I've used the Blue Wallet app to make Lightning instant payments via scanning 3D barcodes rather than NFC. Not a mainstream way to pay yet but there are signs it will take off in the USA this year due to virtually no merchant fees.
  • Hide status bar or enable fullscreen in any app?

    Unsolved
    5
    0 Votes
    5 Posts
    673 Views
    B
    @ian doesnt work for me
  • How to export UT contacts from contacts.db without a working phone?

    Solved
    2
    0 Votes
    2 Posts
    288 Views
    D
    Ok, it was much easier than I believed. I just had to query the contacts.db (I used DB Browser for SQLite) as select vcard from folder_id;. select all results, copy and paste them into a text file and save this file as contacts.vcf. open this file in Android, confirming that contacts need to be imported.
  • SIM seems OK, but unable to call/data (SMS works)

    Unsolved
    8
    0 Votes
    8 Posts
    967 Views
    libremaxL
    @subarubrat said in SIM seems OK, but unable to call/data (SMS works): I was just surprised because EVERYTHING indicated it worked, which was true until just now. Everything still works in countries where VoLTE is not mandatory (EU for example).
  • Audioplayer / internet stream / webradio

    Solved
    25
    0 Votes
    25 Posts
    5k Views
    D
    Radio seems to be broken for searching and adding new stations and this, i don't know since when. https://github.com/patrickjane/ut-radio/issues/12
  • nexus 5 with ubuntu touch installed is not being detected on fast boot

    Unsolved
    4
    0 Votes
    4 Posts
    405 Views
    MrT10001M
    @amy It is usually the cable, but also try a USB 2.0 port, not USB 3. Another thing I encountered is old fastboot drivers. I always install Android Studio and keep it up to date as it's Platform Tools has the latest ADB and fastboot drivers.
  • How to avoid the URL key containing keyboard layouts?

    Unsolved
    1
    0 Votes
    1 Posts
    193 Views
    No one has replied
  • Morph browser doesn't let me post on askubuntu

    Moved
    10
    0 Votes
    10 Posts
    809 Views
    B
    @cliffcoggin i have non installed. Is there a browser inherent one?
  • JingPad replacement/clone

    Moved
    14
    0 Votes
    14 Posts
    1k Views
    M
    @vhil-0 But avoid the 2GB/16GB version! There's problems with the UB-installer: https://forums.ubports.com/topic/7212/add-lenovo-x605-to-the-ubports-installer?_=1648905374783
  • Dekko2 how to open attached .wav files?

    Solved
    44
    0 Votes
    44 Posts
    7k Views
    lduboeufL
    @uwahl idk sorry,
  • Is this new feature intentional?

    Solved
    23
    0 Votes
    23 Posts
    3k Views
    IanI
    It does have a use. If you are watching a video in full screen through morph or in media player you can use it to access the top bar to see what the time is or what your new notification is.
  • Not receiving some text messages

    Unsolved
    11
    0 Votes
    11 Posts
    751 Views
    lduboeufL
    @csanderson0313 humm, can't reproduce. Have you changed something in settings ? Which device ?
  • Axolotl crashes

    Unsolved
    3
    0 Votes
    3 Posts
    305 Views
    E
    @moem good idea thx !
  • Build from source

    Unsolved
    5
    0 Votes
    5 Posts
    364 Views
    arubislanderA
    @keneda no, not a fork, necessarily. I think the OP means just downloading the source and compiling it.
  • Dual boot app : "No available channels"

    Unsolved
    5
    0 Votes
    5 Posts
    346 Views
    U
    @keneda That sounds interesting, I'll think about it if I get an a/b slots device in the future. For now I think I will use a regular single boot to keep things simple.
  • Share Ubports Folder On Local Network?

    Unsolved
    15
    0 Votes
    15 Posts
    1k Views
    Peter GammaP
    @arubislander Thanks for sharing your experience. The reason why it does not work for me is simple since I don t have a Ubports phone available. I stuck in the process of unlocking the bootloader of a Xiaomi phone and it was very difficult, and I don t know whether it is worth to continue. I have now also a Fairphone 3 available which hopefully is easer. I have listed the options which I know which are possible to connect a phone to a PC on my personal website: for Ubports phones: https://petergamma.org/file-access-from-pc-to-ubports-linux-phone/ for (Ubports) PinePhones: https://petergamma.org/file-access-from-pc-to-linux-pinephone/ Thanks for sharing these information. To connect a Linux phone to a PC with a network shared folder or to connect a phone SD card as a network drive to a Windows or Ubuntu Desktop network the same way it works on a PC would be highly desirable. But I am happy to know what is possible.
  • Xiaomi Redmi Note 7 pro stuck on boot screen.

    Unsolved
    5
    0 Votes
    5 Posts
    911 Views
    A
    @loboturbo Hi, I read from notes that we need android 9.0 and installed the official release from India rom sites. The process still did not work for me when I used the android 9 version of stock MIUI rom and I would get the same result as you. Eventually what worked for me: used TWRP Flashed Android rom version 9.9.3 (I read that the maintainer had tested on 9.9.3) Then used the latest UBports installer version 0.9.x beta After repeated failure to install from the stable channel I chose to install the RC version and that worked After installation I tried to update the OS from phone settings using the stable channel but that would not boot and I had to reinstall from RC channel again using the UBports installer. As of now I'm running the RC channel and it seems to be working fine. Sometimes the swipe from right to close the applications starts misbehaving. However lock and unlock of the phone sets it right. Rest of the features at least seem ok. I am able to browse, make calls and use phone messages.