Crestron TSW 1060. POE HA dash for $30. Firmware

My dream is to load custom firmware on these and ditch the crestron OS entirely

It’s likely because there’s a backend change for Teams Panel, and they have to wait until Microsoft certifies v3 firmware to be available in the Teams Admin Console, so they can’t have a bunch of panels running teams panel auto-updating before the firmware is certified.

Just re-read the release notes and it’s likely because early firmwares were android 8, and you need to update to android 10 firmwares before updating to android 12. I assume jumping from 8 to 12 would likely brick the panel or cause issues, so they’re keeping it an opt-in rather than opt-out.

Also you seem to have found the answer already, but the OLH you linked refers to the Light bar on the XX70 panel.

And my ticket about the source code was just closed without any response after a few days with no change made.

Well, new update: I managed to borrow a 770 running 3.x, and the wireless debugging option is indeed there. It’s a real pain in the neck to access given it only works on Wi-Fi - apparently Ethernet doesn’t count here. The usual adb pair and adb connect will work though.

From this ADB connection, I can run adb shell, but I cannot run adb root:

āžœ  adb root
adbd cannot run as root in production builds
āžœ  adb shell
error: failed to create pty master: Permission denied
                                                     %  
āžœ  adb shell /bin/bash
whoami   # note, no PTY, so no prompt.
shell

I also can’t touch most of the files in /vendor/bin, so I guess they did their homework and actually locked things down in firmware 3.x. Not bad, Crestron!

I haven’t torn apart my 770 (and can’t tear apart my borrowed one) to try UART yet, and I actually have no idea where the UART traces are.

Next steps are going to be to see if UART gives us root, or whether ADB :sparkles: trickery :sparkles: can get us a root shell. Although, I’m not sure what we’d really need a root shell for anymore…

UPDATE: Android is reporting that the bootloader is unlocked! Not sure why or how, but hey, I’ll take it.

UPDATE 2: Some board shots of the 770. Now to try to find UART.


UPDATE 3: I’ve probed every contact on the bottom side of the board and couldn’t find a UART. This isn’t really my skillset, but it seems odd. There should be one per boot.img:

console=ttyMSM0,115200,n8 androidboot.console=ttyMSM0

Ooh! Cool to see progress on serial access on the 770.

I suspect the circled pins might be UART. I’m not super experienced with hardware level debugging, but in my experience with networking equipment, UART headers are often laid out in a straight line like in your photo. I’m not certain if Crestron follows the same layout but it’s certainly a possibility. Any chance you might be able to provide a close up of the chip adjacent to those pins? I’ll crack open one of my 770s and see if I can get serial access with those pins.

I thought it was too, but no luck when I tried it.

Now, it’s very possible that my puny 24MHz logic analyzer and assumption about 115200 baud are incorrect, but I did try every pad and none of them gave me what looked like a sane UART stream.

The chip next to it (and the same one below) only has the markings 64 6 on it. I’ve reassembled my 770 in the meantime to poke at its software, so I can’t easily grab photos at the moment. I’ll do so again once I have it open again - alongside photos under the copper shield – I just need to wait for a cheap Amazon rework station to show up and replace my broken cheap Amazon rework station.

I’ve been digging through the firmware files for the xx60 unit and discovered that it includes a built in file explorer and the Miracast app preinstalled. It looks like the device is running a modified DroidLogic Android build. Plugging in a USB drive with APKs was easy, but sideloading apps is disabled by default on this 760. Has anyone found the Settings app? I was able to easily launch it on the 770 unit but this 760 is not being so nice…

Miracast: APPMODE com.droidlogic.miracast
File Browser: APPMODE com.droidlogic.FileBrower

com.android.settings was a bust on my 1060, but other apps do work - assuming you have any other apps. I managed to get it to launch com.android.development, but it would really depend on what apps you have.

I suspect if you get ADB (run adbd from the serial console), you’d be able to do an adb install and launch something else though.

Is the web performance any better in the newer firmware? I notice with bigger dashboards there is slight lag when changing pages and opening menus. I might consider updating one of my panels if there is actually a benefit in daily use.

There are some mosaic quality pictures of under the shield in the FCC listing internal photos

I ordered a few so I’ll poke around whenever they arrive in a week

Haven’t really tested performance, but I have noticed that the adaptive brightness is significantly better. The approach-to-wake thing also is nice, but might be a bit gimmick-y depending on use case. The screen is also just higher resolution.

I don’t have a 1070 installed outside of the bench, so I can’t really say how good the performance is in real life conditions. It does seem faster, though really aggressive charts and all still take a while to load.

Shame though, I was hoping to avoid eBay competition for new tablets :sweat_smile:.

Much appreciated, this isn’t my strong suit. Worst case, anyone looking to hack their devices can just stay on 2.x without too much pain I’d think.

It’s also absolutely possible that these devices just don’t have UART on them. It would be surprising, but not impossible. It’d be much more fun to find a proper exploit then.

I can’t find any x60 series at the moment since I moved recently, but a friend has a dead SD unit. Can someone please send me an image of a x60 series internal SD card?

what format are you folks streaming video to these units. have a TSW-760 and get nothing, but green screens with the formats i try. webrtc, mse, hls, mp4, etc. FW 3.002.1061

are you using the custom:webrtc card or picture glance?

UPDATE: I think it has to do with http camera streams vs. https camera streams. https seems to work, but not http. I don’t get why though.

Alright while poking around on the xx70 board I didn’t see anything that looked like the 3v3 UARTs that the previous versions of these had. I looked in the dtb file in the boot.img and saw the SOC in these is a MSM8953 + PMI8950 QRD SKU3 (a Snapdragon 625). The datasheet for these says the UART is a 1.8V logic level, so in the interest of not blowing it up I will now be ordering yet another FT232H since all my debuggers only do 3v3.

Also, since the xx70 seems to use the built in android updater I wonder if we can use the unlocked firmware version to run that update command with a modified update package, maybe even a stock Android since this uses a Snapdragon SOC that was used in many phones.

I wonder if there’s an onboard USB interface, perhaps? The USB stack on this device should be pretty straightforward since it recognizes USB flash drives and all. I did the lazy thing and tried using an A-to-A cable but didn’t get anything - although I suppose that doesn’t mean too much (or I did something wrong).

Given we at least have remote ADB though APPMODE com.android.settings (or via downgrade on firmwares < 3.0), we do at least have the ability to install and set any app on the xx70. Bodes well, though it’s not full root. This is probably enough for almost all use cases, save for the ā€œconvert TSS to TSWā€ which will still need some privilege escalation somehow.

I did manage to discover an exploit where you can pass a setuid binary into userspace and actually execute it, but Android’s built-in protections mean the typical way(s) of calling su don’t really want to work it seems. Of course, Crestron services still run as root (!), so in theory a vulnerability in Crestron’s code could let us escape. Shame they seem to do things mostly well nowadays.

Well it’s not https or http that is the cause.

It’s a couple things:

  1. Carmera bitrate. Haven’t quite figured out the settings, but while using picture-glance card it’ll start then go green after 20s or so. The green has to do with variable bitrate i think.
  2. picture-glance vs. webrtc-camera card. nothing webrtc-camera card works. Get weird option error. picture-glance works ā€œsomewhatā€, but not perfect. it is of course delayed as i don’t run go2rtc via ha, but rather outside of ha.

This thing is kinda fun, but i’m likely to pass it on to the next person eventually as i don’t see it meeting ā€œallā€ my needs.

are you able to try sideloading the HA APK on v3 over ADB and then setting the APPMODE to the HA app? I’d upgrade one of mine and try it but the v3 firmware continues to be elusive…

It does work, but it also needs to be hacked into place. adb install works basically as you’d expect, but you will then need to use monkey to launch Home Assistant once via adb shell:

TSW-x70bench:/ $ monkey  --pct-syskeys 0 -p io.homeassistant.companion.android 1

Then:

TSW-770>APPMODE io.homeassistant.companion.android
Application mode is now enabled.
Please reboot to take in effect.

Note that if you don’t launch the app organically, you get the cryptic error of Failed to enable application mode.

And sure enough, it launches. I’ve also gotten various terminal emulators and other random APKs to work just fine.

This is sweet, we might not even have to break into these, if we can just get our hands on the firmware!

Alright here is the xx70 UART

115200 baud
1v8 ← IMPORTANT

and once again…

Crestron Touchpanel:/ $ whoami
shell
Crestron Touchpanel:/ $ su
Crestron Touchpanel:/ # whoami
root

wonderful.

start adbd works like previous, and I was able to adb install the HA app. Since this is real Android it seems that I am unable to remount / to edit system files and such, unfortunate.

Annoying that they put all the test pads on the wrong side of the board

Realistically the 2.004.1026 vuln will be way easier to use instead of tearing the thing open (unless newer v2 firmware is better in some way?), but at least we know root over UART is there.

1 Like

Beautiful find! I swear I probed those pins, but I guess my logic analyzer wasn’t sensitive enough to pick up 1V8. Ah well.

I am very curious to see su in the PATH, since I don’t remember seeing that in the firmware files. Given we (should) have uBoot access though, that would still be good enough.

And yes, a downgrade to 2.004 would be a good idea for most cases (hint: they never deleted the files from the public firmware server), at least as long as we can actually do that. I don’t think it’s too bad to up/downgrade as required for a shell, though it would be cool to be able to toggle things without going through far too many steps.

I did independently confirm a second security vulnerability in 3.x (and possibly earlier versions) that allows root access without opening things up. I’ve reported this to Crestron since this does affect active hardware, but between that and the UART find, I suspect we’ll be in good shape for as long as this hardware is still kicking. I’ll try to convince my friend to let me pop open the 3.x 770 I have to play with the UART and confirm.