Is this the perfect standalone tablet for HA?

Definitely outside my wheelhouse, so I’m sure I’m doing something stupid, but I keep getting this ‘no such file or directory’ error. I’ve gone over the instructions dozens of times, but not seeing my mistake. I’m guessing I dropped the extracted “kingston-ha-rom” folder in the wrong place (I put it in the EDL folder, the same folder from which I’m running the terminal commands successfully)? Any help much-appreciated!

........main - Device detected :)
sahara - Protocol version: 2, Version supported: 1
main - Mode detected: sahara
sahara - 
Version 0x2
------------------------
HWID:              0x000660e160008000 (MSM_ID:0x000660e1,OEM_ID:0x6000,MODEL_ID:0x8000)
CPU detected:      "APQ8053"
PK_HASH:           0xb9eca30dfea4693497b6ac7eec81d006967281e259eb9ac239f9ce6dabb70c14
Serial:            0x7e48b216

sahara - Protocol version: 2, Version supported: 1
sahara - Uploading loader bin/prog_emmc_firehose_8953_ddr.mbn ...
sahara
sahara - [LIB]: [Errno 2] No such file or directory: 'bin/prog_emmc_firehose_8953_ddr.mbn'

I had the same issue, in the command you run you need to use the entire relative path to the file. i.e /User/Username/edl/kingston-ha-rom/file

From what I am reading, the folder is named edl, not EDL.

Before you accuse me if being a pedant, case does matter.

Incremental success: Discovered that my computer hadn’t fully extracted the compressed file, so not all of the files were even there (it’s a crappy/old laptop I use for these kind of one-off projects).

Also, I was originally extracting the file directly to the ‘edl’ directory per the instructions, when it seems that it’s expecting that all of the subfolders under ‘kingston-ha-rom’ actually be put directly in the ‘edl’ folder (so one level higher)?

Doing all of that got me here:

...........main - Device detected :)
sahara - Protocol version: 2, Version supported: 1
main - Mode detected: sahara
sahara - 
Version 0x2
------------------------
HWID:              0x000660e160008000 (MSM_ID:0x000660e1,OEM_ID:0x6000,MODEL_ID:0x8000)
CPU detected:      "APQ8053"
PK_HASH:           0xb9eca30dfea4693497b6ac7eec81d006967281e259eb9ac239f9ce6dabb70c14
Serial:            0x7e48b216

sahara - Protocol version: 2, Version supported: 1
sahara - Uploading loader bin/prog_emmc_firehose_8953_ddr.mbn ...
sahara - 32-Bit mode detected.
sahara - Firehose mode detected, uploading...
sahara - Loader successfully uploaded.
main - Trying to connect to firehose loader ...
firehose_client
firehose_client - [LIB]: No --memory option set, we assume "eMMC" as default ..., if it fails, try using "--memory" with "UFS","NAND" or "spinor" instead !
firehose - TargetName=MSM8953
firehose - MemoryName=eMMC
firehose - Version=1
firehose - Trying to read first storage sector...
firehose - Running configure...
firehose - Storage report:
firehose - total_blocks:15269888
firehose - block_size:512
firehose - page_size:512
firehose - num_physical:3
firehose - mfr_id:21
firehose - serial_num:4089269805
firehose - fw_version:6
firehose - mem_type:eMMC
firehose - prod_name:8GTF4R
firehose_client - Supported functions:
-----------------
firehose_client - [qfil] raw programming...
firehose_client
firehose_client - [LIB]: File : flash/bin/rawprogram.xml not found.
firehose_client - [qfil] raw programming ok.
firehose_client - [qfil] patching...
firehose_client - [qfil] patching with bin/patch0.xml
firehose_client
firehose_client - [LIB]: File : flash/bin/patch0.xml not found.
firehose_client - [qfil] patching ok
firehose - Setbootablestoragedrive succeeded.
firehose_client - [qfil] partition(0) is now bootable

I’m rather confused, as it seems it’s looking in ‘flash/bin’ rather than directly in the ‘bin’ folder where the files actually are.

Didn’t appear to be successful (plus it all ran instantly), but I went ahead and power-cycled just to confirm. It still boots to the stock startup screen.

Just to be extra clear, here’s the command that I’m running:

That makes sense, but its not obvious to me how the command in the instructions needs to be modified.

You are correct, it’s lowercase. I’m using a different machine to actually flash it, so I was just going off of memory for the folder name.

1 Like

OK, first, some boiler plate:

  • An absolute path starts with a / and is always valid.
  • A relative path starts with any other character. It’s only valid from a specific directory.

So let’s break down the command:

edl qfil bin/rawprogram.xml bin/patch0.xml flash/ --loader=bin/prog_emmc_firehose_8953_ddr.mbn

edl is the name of the binary we wish to run
qfil is an argument that specifies edl’s mode, it expects several options, in order:

  • the PATH to rawprogram.xml
  • the PATH to patch0.xml
  • the PATH to the .bin files

—loader= specifies that edl should use a specific binary to communicate with the device. It expects one option:

  • the PATH to prog_emmc_firehose_8953_ddr.mbn

Let’s imagine an example:

You open a terminal, then clone and build edl.
The path to your edl binary is now most likely:
/home/you/edl/build/

Next, you download and extract the rom from this thread. It’s likely path is:
/home/you/Download/kingston-ha-rom

Now you go to flash the rom, and copy/paste my example command. But it doesn’t work, why?

You supplied edl with the wrong paths!

My example, for brevity, only shows the relative path that coordinates with the files in the rom archive.

For the command to work in your environment, you must update the paths in your command to reflect where the files actually are.

So, given our example, a correct command would be:
edl qfil /home/you/Download/kingston-ha-rom /bin/rawprogram.xml /home/you/Download/kingston-ha-rom/bin/patch0.xml /home/you/Download/kingston-ha-rom/flash/ --loader= /home/you/Download/kingston-ha-rom/bin/prog_emmc_firehose_8953_ddr.mbn

Though you could also do it with a relative path:
edl qfil ../../Download/kingston-ha-rom/ bin/rawprogram.xml ../../Download/kingston-ha-rom/ bin/patch0.xml ../../Download/kingston-ha-rom/flash/ --loader= ../../Download/kingston-ha-rom/ bin/prog_emmc_firehose_8953_ddr.mbn

To the shell, both of these commands evaluate exactly the same.

So when I say “check your paths” this is what I mean.

2 Likes

It looks like I’m also running into issues with a locked tablet. I’m on Arch and edl is in the AUR, so I just installed it from there (meaning it’s in my $PATH somewhere).

Here’s the directory structure I flashed with:

~/Downloads/lenovo-thinksmart-home-assistant-rom
❯ tree
.
├── bin
│   ├── patch0.xml
│   ├── prog_emmc_firehose_8953_ddr.mbn
│   └── rawprogram.xml
├── boot.bin
├── dashboard-cloos.jpg
├── dashboard-madelena.jpg
├── extras
├── flash
├── gallery.apk
├── kingston-ha-rom.7z
├── oem.bin
├── patch0.xml
├── prog_emmc_firehose_8953_ddr.mbn
├── rawprogram.xml
├── README.md
├── resource.bin
├── splash.bin
├── splash.bin.horz
├── system.bin
├── vendor.bin
├── virtualsoftkeys.apk
└── wallpaper.png

I used this command to flash:

 edl qfil rawprogram.xml  patch0.xml ./ --loader=prog_emmc_firehose_8953_ddr.mbn

Here’s the unabridged output from flashing:

~/Downloads/lenovo-thinksmart-home-assistant-rom
❯ edl qfil rawprogram.xml  patch0.xml ./ --loader=prog_emmc_firehose_8953_ddr.mbn
Qualcomm Sahara / Firehose Client V3.62 (c) B.Kerler 2018-2023.
main - Using loader prog_emmc_firehose_8953_ddr.mbn ...
main - Waiting for the device
......
main - Hint:   Press and hold vol up+dwn, connect usb. For some, only use vol up.
main - Xiaomi: Press and hold vol dwn + pwr, in fastboot mode connect usb.
        Run "./fastpwn oem edl".
main - Other:  Run "adb reboot edl".

..........main - Device detected :)
sahara - Protocol version: 2, Version supported: 1
main - Mode detected: sahara
sahara -
Version 0x2
------------------------
HWID:              0x000660e160008000 (MSM_ID:0x000660e1,OEM_ID:0x6000,MODEL_ID:0x8000)
CPU detected:      "APQ8053"
PK_HASH:           0xb9eca30dfea4693497b6ac7eec81d006967281e259eb9ac239f9ce6dabb70c14
Serial:            0xe8e2ec57

sahara - Protocol version: 2, Version supported: 1
sahara - Uploading loader prog_emmc_firehose_8953_ddr.mbn ...
sahara - 32-Bit mode detected.
sahara - Firehose mode detected, uploading...
sahara - Loader successfully uploaded.
main - Trying to connect to firehose loader ...
firehose_client
firehose_client - [LIB]: No --memory option set, we assume "eMMC" as default ..., if it fails, try using "--memory" with "UFS","NAND" or "spinor" instead !
firehose - TargetName=MSM8953
firehose - MemoryName=eMMC
firehose - Version=1
firehose - Trying to read first storage sector...
firehose - Running configure...
firehose - Storage report:
firehose - total_blocks:15269888
firehose - block_size:512
firehose - page_size:512
firehose - num_physical:3
firehose - mfr_id:21
firehose - serial_num:4093136428
firehose - fw_version:6
firehose - mem_type:eMMC
firehose - prod_name:8GTF4R
firehose_client - Supported functions:
-----------------
firehose_client - [qfil] raw programming...
firehose_client - [qfil] programming rawprogram.xml
firehose_client
firehose_client - [LIB]: ./NON-HLOS.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./sbl1.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./sbl1.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./rpm.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./rpm.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./tz.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./tz.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./devcfg.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./devcfg.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./adspso.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./sec.dat doesn't exist!
firehose_client - [qfil] programming ./splash.bin to partition(0)@sector(655360)...
firehose -
Writing to physical partition 0, sector 655360, sectors 22528
Progress: |██████████| 100.0% Write (Sector 0x5800 of 0x5800, ) 8.84 MB/s
firehose_client
firehose_client - [LIB]: ./emmc_appsboot.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./emmc_appsboot.bin doesn't exist!
firehose_client - [qfil] programming ./boot.bin to partition(0)@sector(790528)...
firehose -
Writing to physical partition 0, sector 790528, sectors 65536
Progress: |██████████| 100.0% Write (Sector 0x10000 of 0x10000, ) 9.69 MB/s
firehose_client
firehose_client - [LIB]: ./recovery.bin doesn't exist!
firehose_client - [qfil] programming ./system.bin to partition(0)@sector(923648)...
firehose -
Writing to physical partition 0, sector 923648, sectors 3145728
Progress: |██████████| 100.0% Write (Sector 0x300000 of 0x300000, ) 9.38 MB/s
firehose_client - [qfil] programming ./vendor.bin to partition(0)@sector(4069376)...
firehose -
Writing to physical partition 0, sector 4069376, sectors 786432
Progress: |██████████| 100.0% Write (Sector 0xC0000 of 0xC0000, ) 9.73 MB/s
firehose_client
firehose_client - [LIB]: ./cache.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./persist.bin doesn't exist!
firehose_client - [qfil] programming ./oem.bin to partition(0)@sector(5307456)...
firehose -
Writing to physical partition 0, sector 5307456, sectors 204800
Progress: |██████████| 100.0% Write (Sector 0x32000 of 0x32000, ) 8.86 MB/s
firehose_client
firehose_client - [LIB]: ./mdtp.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./lksecapp.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./lksecapp.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./cmnlib_30.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./cmnlib_30.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./cmnlib64_30.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./cmnlib64_30.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./keymaster64.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./keymaster64.bin doesn't exist!
firehose_client - [qfil] programming ./resource.bin to partition(0)@sector(6161424)...
firehose -
Writing to physical partition 0, sector 6161424, sectors 729088
Progress: |██████████| 100.0% Write (Sector 0xB2000 of 0xB2000, ) 9.71 MB/s
firehose_client
firehose_client - [LIB]: ./userdata.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./gpt_main0.bin doesn't exist!
firehose_client
firehose_client - [LIB]: ./gpt_backup0.bin doesn't exist!
firehose_client - [qfil] raw programming ok.
firehose_client - [qfil] patching...
firehose_client - [qfil] patching with patch0.xml
firehose_client - [qfil] patching DISK sector(14), size=8
<?xml version="1.0" ?><data>
 <patch SECTOR_SIZE_IN_BYTES="512" byte_offset="296" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="14" value="NUM_DISK_SECTORS-34." what="Update last partition 51 'userdata' with actual size in Primary Header." />
   </data>
firehose_client - [qfil] patching DISK sector(NUM_DISK_SECTORS-21.), size=8
<?xml version="1.0" ?><data>
 <patch SECTOR_SIZE_IN_BYTES="512" byte_offset="296" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-21." value="NUM_DISK_SECTORS-34." what="Update last partition 51 'userdata' with actual size in Backup Header." />
   </data>
firehose_client - [qfil] patching DISK sector(1), size=8
<?xml version="1.0" ?><data>
 <patch SECTOR_SIZE_IN_BYTES="512" byte_offset="48" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-34." what="Update Primary Header with LastUseableLBA." />
   </data>
firehose_client - [qfil] patching DISK sector(NUM_DISK_SECTORS-1.), size=8
<?xml version="1.0" ?><data>
 <patch SECTOR_SIZE_IN_BYTES="512" byte_offset="48" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-34." what="Update Backup Header with LastUseableLBA." />
   </data>
firehose_client - [qfil] patching DISK sector(1), size=8
<?xml version="1.0" ?><data>
 <patch SECTOR_SIZE_IN_BYTES="512" byte_offset="32" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-1." what="Update Primary Header with BackupGPT Header Location." />
   </data>
firehose_client - [qfil] patching DISK sector(NUM_DISK_SECTORS-1.), size=8
<?xml version="1.0" ?><data>
 <patch SECTOR_SIZE_IN_BYTES="512" byte_offset="24" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-1." what="Update Backup Header with CurrentLBA." />
   </data>
firehose_client - [qfil] patching DISK sector(NUM_DISK_SECTORS-1), size=8
<?xml version="1.0" ?><data>
 <patch SECTOR_SIZE_IN_BYTES="512" byte_offset="72" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1" value="NUM_DISK_SECTORS-33." what="Update Backup Header with Partition Array Location." />
   </data>
firehose_client - [qfil] patching DISK sector(1), size=4
<?xml version="1.0" ?><data>
 <patch SECTOR_SIZE_IN_BYTES="512" byte_offset="88" filename="DISK" physical_partition_number="0" size_in_bytes="4" start_sector="1" value="CRC32(2,6656)" what="Update Primary Header with CRC of Partition Array." />
   </data>
firehose_client - [qfil] patching DISK sector(NUM_DISK_SECTORS-1.), size=4
<?xml version="1.0" ?><data>
 <patch SECTOR_SIZE_IN_BYTES="512" byte_offset="88" filename="DISK" physical_partition_number="0" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-33.,6656)" what="Update Backup Header with CRC of Partition Array." />
   </data>
firehose_client - [qfil] patching DISK sector(1), size=4
<?xml version="1.0" ?><data>
 <patch SECTOR_SIZE_IN_BYTES="512" byte_offset="16" filename="DISK" physical_partition_number="0" size_in_bytes="4" start_sector="1" value="0" what="Zero Out Header CRC in Primary Header." />
   </data>
firehose_client - [qfil] patching DISK sector(1), size=4
<?xml version="1.0" ?><data>
 <patch SECTOR_SIZE_IN_BYTES="512" byte_offset="16" filename="DISK" physical_partition_number="0" size_in_bytes="4" start_sector="1" value="CRC32(1,92)" what="Update Primary Header with CRC of Primary Header." />
   </data>
firehose_client - [qfil] patching DISK sector(NUM_DISK_SECTORS-1.), size=4
<?xml version="1.0" ?><data>
 <patch SECTOR_SIZE_IN_BYTES="512" byte_offset="16" filename="DISK" physical_partition_number="0" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="0" what="Zero Out Header CRC in Backup Header." />
   </data>
firehose_client - [qfil] patching DISK sector(NUM_DISK_SECTORS-1.), size=4
<?xml version="1.0" ?><data>
 <patch SECTOR_SIZE_IN_BYTES="512" byte_offset="16" filename="DISK" physical_partition_number="0" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-1.,92)" what="Update Backup Header with CRC of Backup Header." />
 </data>
firehose_client - [qfil] patching ok
firehose - Setbootablestoragedrive succeeded.
firehose_client - [qfil] partition(0) is now bootable

When I rebooted my tablet, there was a password. Repeatedly entering the wrong password didn’t trigger a device wipe for me. Here’s a summary of the issues I encountered when trying to erase the user data in fastboot mode:

❯ fastboot devices
HUA0BXPT	 fastboot

❯ fastboot erase userdata
******** Did you mean to fastboot format this ext4 partition?
Erasing 'userdata'                                 FAILED (remote: 'device is locked. Cannot erase')
fastboot: error: Command failed

❯ fastboot format:ext4 userdata
mke2fs 1.46.6 (1-Feb-2023)
Creating filesystem with 1047417 4k blocks and 262144 inodes
Filesystem UUID: 1abf00d8-2e53-43d6-97f6-e42da742d3ef
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

Sending 'userdata' (2160 KB)                       OKAY [  0.098s]
Writing 'userdata'                                 FAILED (remote: 'Partition flashing is not allowed')
fastboot: error: Command failed

❯ fastboot oem unlock-go
FAILED (remote: 'oem unlock is not allowed')
fastboot: error: Command failed

Are there any other recommended courses of action? I may have just gotten unlucky with this tablet.

EDIT: I believe this can be worked around by holding up while powering on to get to the recovery menu and kicking off a factory reset from there.

EDIT: The above is wrong. I believe I’m starting to understand the nature of the problem. I installed edl incorrectly. I need files packaged in the repo, and the way I installed edl doesn’t give me that. I’ll provide more details in a sec.

EDIT: Yeah, so my problem is that I assumed that an AUR installation would be equivalent to doing my own git clone of the repo. You must use the repo, or you must know enough about how this all works to get the loaders from the repo and set them up yourself. I’m an idiot when it comes to anything Android, so I’m just going to stick with the git repo. I wish that the repo author advised folks to use a virtualenv for installing their python dependencies though…

One last EDIT: I still needed to do a factory reset with the up arrow recovery menu on my second tablet, even when I did things somewhat more correctly.

Did you read the comments on AUR? AUR (en) - edl-git

1 Like

I sure didn’t, and that was a Bad Move. Thanks for reminding me to always check that!

1 Like

Thanks for the clarification and help! I finally got it working by using absolute paths, but I’m still not entirely sure why using your command didn’t work as the relative paths should have been correct based on how I extracted things and the directory I was in.

For anyone else, I also seemed to run into issues with it being locked. Repeated attempts didn’t move past it and fastboot seemed unable to see the device (despite using several ‘high-quality’ cables). I even got a single message once to reboot to reset the device but doing so brought me right back to the login screen. Ultimately I just sat down and went through a LOT of failed attempts and eventually got the ‘10 more times and you’ll lose your data’ message. After that, all was good.

Honestly though, my first impressions are kind of ‘meh’. I love the physical build quality (and if/when wakeword functionality can get working, that’d probably be great) but it just seems rather sluggish compared to my 2020 Fire HD 8 tablet I was planning for it to replace. I’ll play around with it some more before deciding if I want to get any more.

Edit: After letting it sit for a while and coming back to it, it seems quite a bit snappier (enough so that I’m again considering if I want to grab a couple more). Would there maybe have been some cleanup activities going on in the background?

It appears not including a userdata.bin was a mistake.

I’m going to upload a blank userdata.bin tomorrow.

Just place it with the rest of the files before you flash.

The fire tab and this device have very similar specs. I’d bet the difference in performance (5-15%) is down to 32 vs 64 bit android.

Lenovo decided we’d be better of with 32 bit software for our 64 bit cpu :face_with_raised_eyebrow:

All that said, it outperforms everything in its price range.

Android likes to waste cpu cycles on decompression first couple of boots. Once it’s finished unzipping apks and doing file operations, things usually speed up considerably.

This is very good advice.

I’m a recent convert to silverblue (after 20 years on Debian!). I really like toolbox, saves me from myself, lol.

2 Likes

Would it be an option to describe a recommended path on a defined platform like e.g. the EDL Live DVD? Then there would be almost no software difference between the various users installations.

This worked for me to get past the password lock screen i was experiencing

adb push extras/wallpaper.png /sdcard/Download/

Download not Downloads

@mattmon Thank you for all the work you have put into this. It is truly awesome.

1 Like

I wonder if there’d be a way to containerize some or all of this. Like, I have no idea how that’d work on Windows or MacOS (since I only used MacOS for 2 months, 3 years ago, and it’s been 10+ years for Windows, and containers are a hacked together mess on both of those platforms). However, a highly privileged container on Linux (in the host’s net, ipc, and pid namespaces) seems like it should work, and it might reduce the number of requests for help you’re receiving. It’d just remove all of the ambiguity about file paths and merging the install of edl with your stuff. Someone else who knows more about the other platforms could then try to port the Linux solution over.

It all seems easy except for the udev rules that edl installs when it tells you to sudo python3 setup.py install. I really wouldn’t want the container to install udev rules, but I also feel like there must be other containerized things that have solved this problem. I’ll have to ponder on it.

EDIT: wow, that’s one crazy udev rule! The other rule is much more tame. I wonder if it could be modified to only evaluate when the container is running.

1 Like

Not necessarily specific to this device, but posting it here as my specific use-case would be on this device: has anyone been able to utilize the speaker as a media player? I haven’t actually played any media on it locally, but I assume it’s a decent speaker (based on its original intended purpose). I’m thinking like a Google Home Mini quality level - good enough for notifications, listening to podcasts or background music. Ideal would be able to have it recognized as a Google Cast device for grouping with other speakers (I have a ton of CC audios in my house), but as long as it allowed casting from apps (and was visible to HA as a media player) it’d be perfectly acceptable.

I’ve done some general searching and tried out some apps, but everything I’ve found either seems sketchy, doesn’t work for DRM content or just doesn’t work at all. It also seems like most if not all of them would interrupt the use of the screen as a HA dashboard too.

What about using vlc or mod mpd or squeeze player on the device?

Maybe I’m wrong, but I couldn’t see how to do this on an Android device; seemed the app doesn’t have that functionality versus a desktop install.

I haven’t found a reason to buy and use browser mod yet (yet to find something the native HA app doesn’t do just fine), but if this is it I don’t mind doing so. Just don’t want to go down that rabbit hole if it won’t do what I want. :slight_smile:

Also SEEMED like squeeze player might work, but it’s also not free and wasn’t 100% sure it would do what I’m after.

And then there’s also the question of whether a given solution will actually work on this device. It’s running such an old version of Android… Just figured surely someone else has already done this?

Edit: I was confusing/combining browser mod and fully kiosk in my head. :slight_smile: They’re both things everyone seems to use but I’ve never found the need. Seems like browser mod might be the most straightforward, assuming it works on this?

Oops mpd not mod …

I paid for https://play.google.com/store/apps/details?id=de.bluegaspode.squeezeplayer years ago, and my one payment runs it on many android devices. When i get the lenovo device i’ll test it for you.

1 Like