Skip to content

Instantly share code, notes, and snippets.

@maatthc
Last active November 16, 2025 15:05
Show Gist options
  • Select an option

  • Save maatthc/792471812150010c935aedd34c93aedf to your computer and use it in GitHub Desktop.

Select an option

Save maatthc/792471812150010c935aedd34c93aedf to your computer and use it in GitHub Desktop.
LG WebOStv - Play games on RetroArch from USB drive
#!/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
@shienok
Copy link

shienok commented Jan 16, 2025

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!

@maatthc
Copy link
Author

maatthc commented Jan 17, 2025

Hi @shienok ,
Updated.. try and let me know if it works..

@tricky67
Copy link

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

@maatthc
Copy link
Author

maatthc commented Feb 27, 2025

Hi @tricky67 , thanks!
I might add a test for that in the script.
What version of WeOs is your tv at?

@2gammer21
Copy link

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

@HenryKun55
Copy link

Alguém conseguiria fazer um vídeo de como eu consigo rodar esse script sem ter feito root na tv ?

@Yovskii
Copy link

Yovskii commented Mar 23, 2025

@maatthc Eu tenho accesso ao Root na TV, antes quando Instaletei RetroArch primeira vez ele faz a leitura do pendrive, porem de tanto eu fazer unistall e install por que estava tentando confirgurar, emulador parou de ler os pendrive. Eu coloquei alguns jogos na memoria da TV porem é apenas 1GB. Poderia explicar melhor o passo a passo de como fazer isso. Eu tenho acesso ao root e o terminal tambem.

@Yovskii
Copy link

Yovskii commented Mar 23, 2025

@mirogster
Copy link

mirogster commented Aug 31, 2025

Bump. May confirm, everything is working now after those changes https://gist.github.com/maatthc/792471812150010c935aedd34c93aedf?permalink_comment_id=5457777#gistcomment-5457777 mentioned.

Had similar problems with recognition of SDA1 (none), then ran that changed script. All gucci :P

Thank you!!

PS. Rooted OLED 48B4
webOS 24 / 9.2.4-44
SDD with NTFS

@vinelt76
Copy link

In mine it detecst now the archives but doesnt let me use a core to play the games just says no cores available even i have the cores and BIOS , anyone got this issue?

@ElYaiko
Copy link

ElYaiko commented Oct 5, 2025

I get "webosbrew/ not exists" (I haven't rooted my TV)
Any help how to root my LG WebOS 9+?

@maatthc
Copy link
Author

maatthc commented Oct 5, 2025

I get "webosbrew/ not exists" (I haven't rooted my TV) Any help how to root my LG WebOS 9+?

Try this..

@ElYaiko
Copy link

ElYaiko commented Oct 5, 2025

I get "webosbrew/ not exists" (I haven't rooted my TV) Any help how to root my LG WebOS 9+?

Try this..

I tried but I get error (It seems to be patched for 9+ 😞 )

@wes1993
Copy link

wes1993 commented Nov 15, 2025

Hi all,
Thanks a lot for this guide, there are some options for network drive?

@maatthc
Copy link
Author

maatthc commented Nov 16, 2025

Very good question.. but I'm pretty sure it is possible.. would be nice to have..

@wes1993
Copy link

wes1993 commented Nov 16, 2025

Hi @maatthc
I’ve checked, but unfortunately the TV doesn’t have the components needed to mount the share. They might need to be compiled, but I’d rather not risk bricking the TV :-(

root@LGwebOSTV:# which mount
/bin/mount
root@LGwebOSTV:
# which mount.nfs
root@LGwebOSTV:# ls /sbin /bin /usr/sbin /usr/bin | grep nfs
root@LGwebOSTV:
# lsmod | grep nfs
root@LGwebOSTV:~# lsmod
Module Size Used by
dm_eswap_ad 16384 0
dm_eswap 61440 3 dm_eswap_ad
wlan_mt7663_usb 1875968 0
btmtk_usb 106496 2
tfat 311296 0
tntfs 458752 0
a8303 16384 0
dvb_a8303_chip 16384 1 a8303
dvb_a8303_adapter 16384 1 dvb_a8303_chip
rda5815m 16384 0
dvb_rda5815m_chip 24576 1 rda5815m
dvb_rda_adapter 16384 1 dvb_rda5815m_chip
si2178b 16384 0
si2178b_atv 16384 0
dvb_si2178b_chip 188416 2 si2178b,si2178b_atv
dvb_silab_adapter 16384 1 dvb_si2178b_chip
dvb_dtv_soc 16384 0
dvb_dtv_soc_chip 49152 1 dvb_dtv_soc
dvb_common_adapter 16384 2 dvb_dtv_soc_chip,dvb_si2178b_chip
demod_khal 1167360 1 dvb_dtv_soc_chip
webos_tv 57344 10 dvb_a8303_chip,a8303,si2178b,dvb_dtv_soc_chip,dvb_dtv_soc,si2178b_atv,rda5815m,dvb_si2178b_chip,dvb_rda5815m_chip
mali_kbase 471040 8
mali_fb 20480 6
dma_buf_test_exporter 20480 28 mali_kbase

Best regards
Stefano

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment