-
-
Save maatthc/792471812150010c935aedd34c93aedf to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# === For rooted LG TVs with WebOsBrew installed only === | |
# | |
# On LG WebOStv, RetroArch only have access to a few jailed folders so to run games on a usb drive, | |
# we need to 'merge' the USB mounting point with one of those jailed folders using OverlayFS. | |
# The scripts on folder '/var/lib/webosbrew/init.d/' will run after every tv boot. | |
# Remove the $STARTUP_FOLDER/$SCRIPT_TO_RUN_AFTER_BOOT and reboot to revert the change. | |
# | |
# Tested on 7.3.0-03.30.72 | |
# | |
# Steps: | |
# - Copy this script to a pen drive and insert it to the TV | |
# - Check if the folder '/tmp/usb/sda/sda1/' exists and have the content of your pen drive. | |
# - Run the script | |
# | |
# The folder structure might be different depending of your TV version | |
set -euo pipefail | |
JAILED_FOLDER=/var/palm/jail/com.retroarch/media/internal | |
USB_MOUTING_POINT1=/tmp/usb/sda/sda1/ | |
USB_MOUTING_POINT2=/tmp/usb/sdb/sdb1/ | |
USB_MOUTING_POINT3=/tmp/usb/sdc/sdc1/ | |
SCRIPT_TO_RUN_AFTER_BOOT=add_usb_drive_to_retroarch_media_folder | |
STARTUP_FOLDER=/var/lib/webosbrew/init.d | |
echo -e "#!/bin/bash \nmount -t overlay -olowerdir=${JAILED_FOLDER}:${USB_MOUTING_POINT1},nofail overlay ${JAILED_FOLDER}" > $STARTUP_FOLDER/$SCRIPT_TO_RUN_AFTER_BOOT | |
echo -e "\nmount -t overlay -olowerdir=${JAILED_FOLDER}:${USB_MOUTING_POINT2},nofail overlay ${JAILED_FOLDER}" > $STARTUP_FOLDER/$SCRIPT_TO_RUN_AFTER_BOOT | |
echo -e "\nmount -t overlay -olowerdir=${JAILED_FOLDER}:${USB_MOUTING_POINT3},nofail overlay ${JAILED_FOLDER}" > $STARTUP_FOLDER/$SCRIPT_TO_RUN_AFTER_BOOT | |
chmod +x $STARTUP_FOLDER/$SCRIPT_TO_RUN_AFTER_BOOT | |
echo "Script ${STARTUP_FOLDER}/${SCRIPT_TO_RUN_AFTER_BOOT} created." | |
echo "Press any key to reboot and activate changes or CRTL+C to quit." | |
read -n 1 | |
reboot |
Fixed after reformatting usb using NTFS (overlayfs: filesystem on '/tmp/usb/sda/sda1' not supported)
@maatthc I have the same problem. run the script, TV rebooted, no new files or folders in /media/internal/ seen in retroarch.
root@LGwebOSTV:~# ls -la /var/palm/jail/com.retroarch/media/internal/
total 40
drwxrwxrwx 10 root root 4096 Aug 20 03:07 .
dr-xr-xr-x 5 6103 5000 4096 Aug 18 2023 ..
-rw-r--r-- 1 root root 0 Jan 1 2022 .VolumeIcon.icns
drwxr-xr-x 2 root root 4096 Jan 1 2022 .sysservice
drwxr-xr-x 2 root root 4096 Jan 1 2022 .temp
drwxr-xr-x 3 root root 4096 Jan 1 2022 .wallpapers
drwxr-xr-x 6 root root 4096 Aug 19 04:25 ROMs
drwxr-xr-x 2 6799 5000 4096 Aug 20 2023 avs
drwxr-xr-x 2 root root 4096 Feb 26 2023 downloads
drwxr-xr-x 2 root root 4096 Jan 1 2022 ringtones
drwxr-xr-x 2 6799 5000 4096 Aug 18 2023 vsk
root@LGwebOSTV:~# cat /var/lib/webosbrew/init.d/add_usb_drive_to_retroarch_media_folder
#!/bin/bash
mount -t overlay -olowerdir=/var/palm/jail/com.retroarch/media/internal:/tmp/usb/sda/sda1/,nofail overlay /var/palm/jail/com.retroarch/media/internal
root@LGwebOSTV:~# ls -la /var/lib/webosbrew/init.d/add_usb_drive_to_retroarch_media_folder
-rwxr-xr-x 1 root root 163 Aug 21 00:56 /var/lib/webosbrew/init.d/add_usb_drive_to_retroarch_media_folder
root@LGwebOSTV:~# ls -la /tmp/usb/sda/sda1/
total 640
drwxr-xr-x 5 root root 131072 Jan 1 2022 .
drwxr-xr-x 3 root root 60 Jan 1 2022 ..
drwxr-xr-x 2 root root 131072 Aug 21 00:21 Smart TV
drwxr-xr-x 2 root root 131072 Aug 21 00:10 System Volume Information
-rwxr-xr-x 1 root root 1318 Aug 21 00:56 add_usb_drive_to_retroarch_media_folder_install.sh
drwxr-xr-x 3 root root 131072 Aug 21 00:10 roms
(Note that the ROMs folder in /media/internal was already there)
Edit: nevermind, it was the file format as well. Apparently only NTFS works, which is odd for a Linux system,
My LG TV (Firmware 03.30.73 webOS 7.3.0) randomly switches the USB storage path between /tmp/usb/sda/sda1/ to /tmp/usb/sdb/sdb1/ and /tmp/usb/sdc/sdc1/. Is it ok to put each path in a file init.d? like:
#!/bin/bash
mount -t overlay -olowerdir=/var/palm/jail/com.retroarch/media/internal:/tmp/usb/sda/sda1/,nofail overlay /var/palm/jail/com.retroarch/media/internal
mount -t overlay -olowerdir=/var/palm/jail/com.retroarch/media/internal:/tmp/usb/sdb/sdb1/,nofail overlay /var/palm/jail/com.retroarch/media/internal
mount -t overlay -olowerdir=/var/palm/jail/com.retroarch/media/internal:/tmp/usb/sdc/sdc1/,nofail overlay /var/palm/jail/com.retroarch/media/internal
Yeah.. give it a try.. let me know if it works..
My file...
/var/lib/webosbrew/init.d/add_usb_drive_to_retroarch_media_folder
...now looks like this:
#!/bin/bash
mount -t overlay -olowerdir=/var/palm/jail/com.retroarch/media/internal:/tmp/usb/sda/sda1/,nofail overlay /var/palm/jail/com.retroarch/media/internal
mount -t overlay -olowerdir=/var/palm/jail/com.retroarch/media/internal:/tmp/usb/sdb/sdb1/,nofail overlay /var/palm/jail/com.retroarch/media/internal
mount -t overlay -olowerdir=/var/palm/jail/com.retroarch/media/internal:/tmp/usb/sdc/sdc1/,nofail overlay /var/palm/jail/com.retroarch/media/internal
This kind of works, it doesn't matter what letter between A-C LG has decided to use for mounting. But it requires a reboot from the homebre channel if the path has changed since the last normal TV startup.
Legend! Thanks!
Hi. Almost a year has passed, but my problem is still not solved.
LG C3, rooted, webos 8.2.0-710 (number1-nambung), software version 03.20.17.
Retroarch version 1.19.1 (from Homebrew Channel)
I tried 2 different flash drives with 8 and 16 gb. I tried ntfs, fat32, exfat.
My steaps:
- I formated flash drive. On empty flash drive i put only 2 files - add_usb_drive_to_retroarch_media_folder_install.sh and Donkey Kong Country 2 - Diddy's Kong Quest (USA) (En,Fr).sfc. I set flash drive on TV.
- On my pc i opened Dev Manager, successfuly conncted to my TV, opened Terminal
- I entered: cd /tmp/usb/sda/sda1/
- I checked success: ls (i see only those 2 files)
- I entered: sh add_usb_drive_to_retroarch_media_folder_install.sh. Pressed random buttom, TV reloaded succesfully.
- On TV i open Retroarch, i load snes core, i go to Load Content, i see:
/media/internal
/tmp/usb/sda/sda1/
/ - I go to /tmp/usb/sda/sda1/ - and see nothing.
I plug off usb flash drive, set it into my PC and see only this:
-Smart TV (empty folder)
-add_usb_drive_to_retroarch_media_folder_install.sh (file)
-Donkey Kong Country 2 - Diddy's Kong Quest (USA) (En,Fr).sfc (file)
Pls what am i doing wrong?(
Hi @shienok , Perhaps your TV is mounting the usb drive in another location, like @Nalle65 described above. Also, try another ROM - mine are all .zip files (no idea that is inside) or .smc ..
Thanx for reply, pls can you write full Nalle65's code here so i can replace your original code with Nalle65's version?
I am not a programmer) i realy dont understand where to put his text code.
Thanx!
Hi @shienok ,
Updated.. try and let me know if it works..
On my rooted LG TV, com.retroarch is actually com.retroarch.webos. So needed this in the script
JAILED_FOLDER=/var/palm/jail/com.retroarch.webos/media/internal
Also needed to comment out the sdb and sdc lines to make it use mu USB on sda
Hi @tricky67 , thanks!
I might add a test for that in the script.
What version of WeOs is your tv at?
so i rooted my lg tv, firgured out a path to ftp into the tv, i can ftp into my 2tb drive, but kodi and retro arch cant see my flash drive, and when i terminal in web os manager its un seeable, but the native apps can still use my drive
Alguém conseguiria fazer um vídeo de como eu consigo rodar esse script sem ter feito root na tv ?
I'm having an issue as well.


Here is output of script: