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

Hello, have a TSW-560 panel running latest firmware of 3.002.1061. I don’t see an EMS option under applications and only have User Project, Crestron Default, Crestron Home and Appspace. Got any words of wisdom to help me integrate this into HAS or is it junk at this point?

Sorry man, I only have 1060 on hand and have no idea how 560 looks like.

I was willing to give the firmware but Crestron decided they hate the community:(

2 Likes

If someone can share you the basic browser app I had made it might work for you, you’ll need to use toolbox to load it in but then you can enter the url

You don’t need master installer, that just facilitates downloading things for you

Anybody tried to remove Crestron stuffs from the device? ~2 years ago spent a day to figure out, but I forgot a lots of thing about Android stuffs. Based on this received the root password for the device, so can remove anything, but after reboot everything was restored. I suspect there is a vendor folder/partition which restored by an init script, or something.
Also found a kernel source code for it, but don’t have time to try to compile it… That would be the best if we can create a clean Android for the panel.
Another info - it’s pretty easy to disassemble the device (just take care about the display flex cable), and there is a 4GB micro SD card in the board. That SD cards tends to fail after ~3-4 years of use, so good idea to remove it, and make a copy about the content so if it fails would be easier to restore the device.

I think I saw some discussion earlier on in the thread about the device not being able to be defined as a media_player? Just wondering if this is still accurate?

My tsw 1060 currently displays one of the dashboards via browser, but I was hoping to be able to cast a video stream of the doorbell camera to it when it is rung.

I’m new to HA and unfortunately a few month to late to finding this thread about using the TSW-1050. I have my hands on one, but its firmware is 1.501.xxxx. Am I too late in being able to update this to the current firmware and enable the EMS application?

That topic actually about 1060 :slight_smile:
You need DM CountParadox.

I believe x50 panels dont have web servers running on them, and hence no EMS services…
I have a 752, and dont have ems

1 Like

I doubt you can load the HA dashboard directly on these x50 systems.
Your best bet, if you wish to put in the miles, is to create a project and upload that to the panel. Of course, you will need to intercept the joins the touchpanel sends, like this one : Crestron - custom component to integrate a Crestron control system via XSIG

Hey mate, you make any progress on this? Let me know if there’s anything you need to get this moving.

A port of lineageos would save thousands of tablets from the bin

I accidentally figured out how to get root adb shell on a TSS-752 FW v1.002.0013, not sure if its helpful with the x60 or x70 series, haven’t had a chance to get my hands on one yet. It’s running Android 4 Ice Cream Sandwich with SDK 15, which appears to be too old to install even the oldest HA companion apks, and trying to load the dashboard in the browser just results in a broken page. It looks like the latest is v1.004.0014.001 if anyone knows where I can get that…

EDIT: Realized that the whole OS is on the SD card, so you can just mount it and make edits to get adb without any tricks, whoops.

Came across this in the firmware for the 752 if it offers any insight:

{
  "version": 1,
  "signalMapping":
  [
    {
      "name": "DEVICE_INFO",
      "direction": "from_platform",
      "description": "information about the device",
      "signalType": "cresstore",
      "signalId": "Device/DeviceInfo"
    },
    {
      "name": "NETWORK_INFO",
      "direction": "bidirectional",
      "description": "information about the network adapters",
      "signalType": "cresstore",
      "signalId": "Device/Ethernet"
    },
    {
      "name": "HARDKEY_ALL",
      "direction": "from_platform",
      "description": "signal for all hardkeys",
      "signalType": "hardkey",
      "signalId": "-1"
    },
    {
      "name": "DEVICE_ROOT",
      "direction": "from_platform",
      "description": "signal for entire Device's CresStore",
      "signalType": "cresstore",
      "signalId": "Device"
    },
    {
      "name": "DISPLAY_KEYBOARD_LANGUAGE",
      "direction": "bidirectional",
      "description": "change the Display keyboard language",
      "signalType": "serial",
      "signalId": "18240"
    },
    {
      "name": "DISPLAY_LCD_HARDKEY_WAKE",
      "direction": "bidirectional",
      "description": "signal for if display should be woken on hardkey presses",
      "signalType": "interlock",
      "signalId": "18349",
      "interlockedSignalId":"18350"
    },
    {
      "name": "DISPLAY_LCD_BRIGHTNESS",
      "direction": "bidirectional",
      "description": "Brightness of LCD",
      "signalType": "analog",
      "signalId": "17201"
    },
    {
      "name": "DISPLAY_HIGH_LEVEL_PRESET_VALUE",
      "direction": "bidirectional",
      "description": "high level brightness preset",
      "signalType": "analog",
      "signalId": "17903"
    },
    {
      "name": "DISPLAY_MEDIUM_LEVEL_PRESET_VALUE",
      "direction": "bidirectional",
      "description": "medium level brightness preset",
      "signalType": "analog",
      "signalId": "17904"
    },
    {
      "name": "DISPLAY_LOW_LEVEL_PRESET_VALUE",
      "direction": "bidirectional",
      "description": "low level brightness preset",
      "signalType": "analog",
      "signalId": "17905"
    },
    {
      "name": "DISPLAY_IS_HIGH_LEVEL_PRESET",
      "direction": "bidirectional",
      "description": "is high level brightness preset active",
      "signalType": "digital",
      "signalId": "17218"
    },
    {
      "name": "DISPLAY_IS_MEDIUM_LEVEL_PRESET",
      "direction": "bidirectional",
      "description": "is medium level brightness preset active",
      "signalType": "digital",
      "signalId": "17219"
    },
    {
      "name": "DISPLAY_IS_LOW_LEVEL_PRESET",
      "direction": "bidirectional",
      "description": "is low level brightness preset active",
      "signalType": "digital",
      "signalId": "17220"
    },
    {
      "name": "DISPLAY_IS_AUTO_BRIGHTNESS_ENABLED",
      "direction": "bidirectional",
      "description": "is auto brightness enabled",
      "signalType": "interlock",
      "signalId": "17221",
      "interlockedSignalId":"17295"
    },
    {
      "name": "DISPLAY_AUTO_BRIGHTNESS_THRESHOLD",
      "direction": "bidirectional",
      "description": "is auto brightness enabled",
      "signalType": "analog",
      "signalId": "17218"
    },
    {
      "name": "DISPLAY_LCD_HARDKEY_ENABLED",
      "direction": "bidirectional",
      "description": "signal for if display hard key light is enabled",
      "signalType": "interlock",
      "signalId": "18205",
      "interlockedSignalId":"18206"
    },
    {
      "name": "DISPLAY_HARDKEY_BRIGHTNESS",
      "direction": "bidirectional",
      "description": "Brightness of LCD",
      "signalType": "analog",
      "signalId": "17900"
    },
    {
      "name": "DISPLAY_HARDKEY_HIGH_LEVEL_PRESET_VALUE",
      "direction": "bidirectional",
      "description": "high level hardkey brightness preset",
      "signalType": "analog",
      "signalId": "18235"
    },
    {
      "name": "DISPLAY_HARDKEY_MEDIUM_LEVEL_PRESET_VALUE",
      "direction": "bidirectional",
      "description": "medium level hardkey brightness preset",
      "signalType": "analog",
      "signalId": "18236"
    },
    {
      "name": "DISPLAY_HARDKEY_LOW_LEVEL_PRESET_VALUE",
      "direction": "bidirectional",
      "description": "low level hardkey brightness preset",
      "signalType": "analog",
      "signalId": "18237"
    },
    {
      "name": "DISPLAY_IS_HARDKEY_HIGH_LEVEL_PRESET",
      "direction": "bidirectional",
      "description": "is high level hardkey brightness preset active",
      "signalType": "digital",
      "signalId": "18242"
    },
    {
      "name": "DISPLAY_IS_HARDKEY_MEDIUM_LEVEL_PRESET",
      "direction": "bidirectional",
      "description": "is medium level hardkey brightness preset active",
      "signalType": "digital",
      "signalId": "18243"
    },
    {
      "name": "DISPLAY_IS_HARDKEY_LOW_LEVEL_PRESET",
      "direction": "bidirectional",
      "description": "is low level hardkey brightness preset active",
      "signalType": "digital",
      "signalId": "18244"
    },
    {
      "name": "DISPLAY_IS_HARDKEY_AUTO_BRIGHTNESS_ENABLED",
      "direction": "bidirectional",
      "description": "is hardkey auto brightness enabled",
      "signalType": "interlock",
      "signalId": "18555",
      "interlockedSignalId": "18556"
    },
    {
      "name": "DISPLAY_HARDKEY_AUTO_BRIGHTNESS_THRESHOLD",
      "direction": "bidirectional",
      "description": "is auto brightness enabled",
      "signalType": "analog",
      "signalId": "18901"
    },
    {
      "name": "DISPLAY_AUDIO_BEEP_ENABLED",
      "direction": "bidirectional",
      "description": "is audio beeps enabled",
      "signalType": "interlock",
      "signalId": "17302",
      "interlockedSignalId": "17303"
    },
    {
      "name": "DISPLAY_AUDIO_BEEP_VOLUME",
      "direction": "bidirectional",
      "description": "audio beeps volume",
      "signalType": "analog",
      "signalId": "17300"
    },
    {
      "name": "DISPLAY_AUDIO_PANEL_MUTED",
      "direction": "bidirectional",
      "description": "is panel is muted",
      "signalType": "interlock",
      "signalId": "17301",
      "interlockedSignalId": "17300"
    },
    {
      "name": "DISPLAY_AUDIO_PANEL_VOLUME",
      "direction": "bidirectional",
      "description": "panel volume",
      "signalType": "analog",
      "signalId": "17307"
    },
    {
      "name": "DISPLAY_AUDIO_MEDIA_MUTED",
      "direction": "bidirectional",
      "description": "is media is muted",
      "signalType": "interlock",
      "signalId": "18438",
      "interlockedSignalId": "18439"
    },
    {
      "name": "DISPLAY_AUDIO_MEDIA_VOLUME",
      "direction": "bidirectional",
      "description": "media volume",
      "signalType": "analog",
      "signalId": "18271"
    },
    {
      "name": "DISPLAY_SCREEN_SAVER_ENABLED",
      "direction": "bidirectional",
      "description": "is screen saver enabled",
      "signalType": "interlock",
      "signalId": "29100",
      "interlockedSignalId": "29101"
    },
    {
      "name": "DISPLAY_SCREEN_SAVER_24_HR_CLOCK",
      "direction": "bidirectional",
      "description": "is screen saver using 24 hour clock",
      "signalType": "interlock",
      "signalId": "29102",
      "interlockedSignalId": "29103"
    },
    {
      "name": "DISPLAY_SCREEN_SAVER_BRIGHTNESS",
      "direction": "bidirectional",
      "description": "screen saver brightness",
      "signalType": "analog",
      "signalId": "29100"
    },
    {
      "name": "DISPLAY_IS_DOCKED",
      "direction": "from_platform",
      "description": "is device is docked",
      "signalType": "digital",
      "signalId": "17552"
    },
    {
      "name": "DISPLAY_DOCKED_STANDBY",
      "direction": "bidirectional",
      "description": "time in seconds to enter standby if docked",
      "signalType": "analog",
      "signalId": "18253"
    },
    {
      "name": "DISPLAY_UNDOCKED_STANDBY",
      "direction": "bidirectional",
      "description": "time in seconds (minutes for undockable devices) to enter standby if not docked",
      "signalType": "analog",
      "signalId": "17203"
    },
    {
      "name": "DISPLAY_UNDOCKED_SUSPEND",
      "direction": "bidirectional",
      "description": "time in seconds to enter suspend if not docked",
      "signalType": "analog",
      "signalId": "17202"
    },
    {
      "name": "USB_RED_LED_CONTROL",
      "direction": "bidirectional",
      "description": "signal to control usb accessory light",
      "signalType": "digital",
      "signalId": "30025"
    },
    {
      "name": "USB_GREEN_LED_CONTROL",
      "direction": "bidirectional",
      "description": "signal to control usb accessory light",
      "signalType": "digital",
      "signalId": "30026"
    },
    {
      "name": "USB_BLUE_LED_CONTROL",
      "direction": "bidirectional",
      "description": "signal to control usb accessory light",
      "signalType": "digital",
      "signalId": "30027"
    },
    {
      "name": "USB_ACCESSORY_CONNECTED",
      "direction": "from_platform",
      "description": "feedback if accessory is connected",
      "signalType": "digital",
      "signalId": "30022"
    },
    {
      "name": "USB_RED_LED_BRIGHTNESS",
      "direction": "bidirectional",
      "description": "signal to control usb accessory light brightness",
      "signalType": "analog",
      "signalId": "33354"
    },
    {
      "name": "USB_GREEN_LED_BRIGHTNESS",
      "direction": "bidirectional",
      "description": "signal to control usb accessory light brightness",
      "signalType": "analog",
      "signalId": "33355"
    },
    {
      "name": "USB_BLUE_LED_BRIGHTNESS",
      "direction": "bidirectional",
      "description": "signal to control usb accessory light brightness",
      "signalType": "analog",
      "signalId": "33356"
    }

  ]
}
1 Like

I have the 752 with the latest firmware, but I dont have access to the firmware itself…
Would a clone work? or if you need me to run anything on the 752, let me know

How did you manage to get adb?

Ask CountParadox privately, i think he can help you with firmware.
(Profile - CountParadox - Home Assistant Community)

Yeah if you have a dd clone or other of your SD card I can load it and it should just work. I assume we will get in trouble if we make a public archive of all the SD firmwares but having that could be nice.

Yeah, will dd and send you the link

1 Like

TLDR you can mount the system partition on a linux machine and edit how they handle the ssh session to get a normal shell instead of the locked down crestron command line thing and start adbd.

For the following, the SD card in my machine is /dev/sda and the IP on my network is 10.1.66.5

Steps:

  1. Create a backup just in case
sudo dd if=/dev/sda of=backup.img bs=4M status=progress
  1. Mount partition 2
sudo mkdir /mnt/tmp
sudo mount /dev/sda2 /mnt/tmp
  1. Edit the file

Using the editor of your choice, open the file /mnt/tmp/bin/sshShell.sh
Find the line /system/bin/telnetSSHProxy SSH $1 and replace it with /system/bin/sh
save the file

  1. Cleanup etc

sudo umount /mnt/tmp


Reassemble the device, now once it starts up if you connect via ssh:

ssh [email protected]

you should get a normal shell

crestron@android:/ #

run start adbd

Now you can connect with adb

adb connect 10.1.66.5
adb shell

Should yield

root@android:/ #

Ideally we would be able to just enable adbd autostart but from my limited knowledge of how android works this is handled by files in the boot partition which is in a weird format on this device and I haven’t looked into it much.

1 Like