[Modding][HowTo] Guide to Jailbreak a Homey Pro 2023

This is (one of) the problem(s):

Thank you for your reply. I am not entirely certain how to interpret it or how to proceed.

I am following the instructions provided for this jailbreak across several sources. However, I have not been able to identify a clear solution for how to continue the attempt using Windows only. I would appreciate clarification on the appropriate next steps or confirmation as to whether a Windows-only approach is still supported.

Google/DuckDuckGo for “rpiboot windows”.

This isn’t, strictly speaking, a Homey issue. Homey has a Raspberry Pi Compute Module, and the usbboot/rpiboot tools are not developed by Athom or are unique to Homey.

Hi gents,

I replaced the module for a 8/32 version.

Everything is running except the resizing of the partitions.

It seems, I haven’t done the Jailbreak right.

I did it under Windows

I copied (overwritten) the files in ROOTB and ROOTA, ejected all the 6 drives (in LFS and I also tried it under Windows)

But I can not connect through SSH…still same - connection refused.

Port is 2222, no firewall etc.

My question is if I will try do the Jailbreak once more, should I do the restore Homey from backup before or can I just try it again without restoring?

What’s interesting - I can not also connect to sandbox on port 22.

and when I think about it, is it actually still possible? I have the latest public firmware in Homey

Re-mount the partitions and check if the files exists - I’m using EJECT using Linux File System by Paragon, instead of built-in Windows functionality.

Resizing of the partitions is unrelated to the jailbreak.

Nope, simply mount the partitions again and redo.

Sandbox seems to be broken, it is unrelated.

Didn’t check recently.

All,

I am struggling with SSH connection.
I can see the script has run, because the port in sshd_config has changed to 2222,
and in rc.local the last to lines pointing to the script are also gone.
This is all in rootb, roota is ontouched as expected. But trying to ssh from any machine, win11, ubuntu and a cisco-switch says “connection refused by remotehost”

Anyone any other suggestions that I could try to login via SSH to my homey?

Many thanks in advance!

Same issue here, ever since one of the last updates the method stopped working. I haven’t yet taken the time to figure out the issue, but my guess is that something changed in the ssh configuration of Homey’s firmware that is causing a conflict of some sort.

When I find out more I’ll post it here.

EDIT:

  • Issue 1: filesystem has no free space left?
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Hit:1 http://deb.debian.org/debian bullseye InRelease
Hit:2 http://deb.debian.org/debian bullseye-updates InRelease
Get:3 http://security.debian.org/debian-security bullseye-security InRelease [27.2 kB]
Err:3 http://security.debian.org/debian-security bullseye-security InRelease
  Error writing to file - write (28: No space left on device) [IP: 2a04:4e42:30::644 80]
Hit:4 http://archive.debian.org/debian bullseye-backports InRelease
Get:5 http://archive.raspberrypi.org/debian bullseye InRelease [39.0 kB]
Err:5 http://archive.raspberrypi.org/debian bullseye InRelease
  Error writing to file - write (28: No space left on device) [IP: 2a00:1098:80:56::1:1 80]
Reading package lists...
Building dependency tree...
Reading state information...
3 packages can be upgraded. Run 'apt list --upgradable' to see them.
W: Failed to fetch http://security.debian.org/debian-security/dists/bullseye-security/InRelease  Error writing to file - write (28: No space left on device) [IP: 2a04:4e42:30::644 80]
W: Failed to fetch http://archive.raspberrypi.org/debian/dists/bullseye/InRelease  Error writing to file - write (28: No space left on device) [IP: 2a00:1098:80:56::1:1 80]
W: Some index files failed to download. They have been ignored, or old ones used instead.

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  libcbor0 libfido2-1 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6
  libxmuu1 ncurses-term openssh-client openssh-sftp-server runit-helper ucf
  xauth
Suggested packages:
  keychain libpam-ssh monkeysphere ssh-askpass molly-guard ufw
The following NEW packages will be installed:
  libcbor0 libfido2-1 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6
  libxmuu1 ncurses-term openssh-client openssh-server openssh-sftp-server
  runit-helper ucf xauth
0 upgraded, 16 newly installed, 0 to remove and 3 not upgraded.
Need to get 3,319 kB of archives.
After this operation, 14.9 MB of additional disk space will be used.
E: You don't have enough free space in /var/cache/apt/archives/.
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ssh
Job for ssh.service failed because the control process exited with error code.
See "systemctl status ssh.service" and "journalctl -xe" for details.

EDIT: yup, the root partition is really almost full!

$ df -kh
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       2.0G  1.9G     0 100% /

I remember a Homey SHS user complaining about this issue, and that it turned out the SHS images were being shipped with dangling (unused) Docker images. I’ll try and see if I can prune dangling images during the boot process to see if that clears up any storage space.

EDIT: that didn’t help much

$ docker system prune -f
Deleted Containers:
03580d60f6c7b5c007239b359910a2377e3dff16687d45e440cb19fb6df040d6
528e240601177b605e1879a6e16c847f8a8e120420a48f6483c3e6bf94c201d4

Total reclaimed space: 0B

It’s now bootlooping though :sweat_smile: Installing 13.1.1…

EDIT: 13.1.1 installed, it looks like it might have just enough space available to install OpenSSH again.

EDIT: nope, there’s just not enough room available. The Docker images for Homey are pretty fat, I wouldn’t be surprised if they contain a lot of unnecessary files, but I’ll have to take a look at that later. Right now I’ve installed a sort-of root shell by adding this to /etc/rc.local:

/usr/bin/socat -d -d TCP4-LISTEN:4443 EXEC:/bin/bash &

Then from my Mac I can access that root shell like so:

socat - TCP4:A.B.C.D:4443

(where A.B.C.D is the IP address of my HP2023)

Only works once after reboot so I’ll have to dive into socat options to see how I can get it to restart each time a connection is closed.

EDIT: this sets up a better root shell

# add to /etc/rc.local
/usr/bin/socat -d -d TCP4-LISTEN:4443,fork EXEC:"/bin/bash -li",pty,stderr,setsid,sigint,sane &

Then use this to connect:

socat file:$(tty),raw,echo=0 TCP:A.B.C.D:4443

Is this also a sort of SSH connection never used this before?
Can I sent also commandos to extend the memory etc?

It’s a sort of SSH connection in that it gives you a (root) shell on Homey. Unlike SSH it’s not secure at all so it’s not a long-term solution.

The problem is that, at least on my Homey, the root filesystem is almost entirely out of space, which makes installing additional commands problematic. I don’t know which commands you need to “extend the memory” (do you mean resize the storage?), but if they require extra packages to be installed it might not work.

Socat does not work at my Homey, still not able to connect :frowning:

What exactly is shown when you try to connect?

Network error connection refused
I use putty A.B.C.D port 4443 RAW

Can you show the full contents of /etc/rc.local on your Homey?

Also, Homey has two root partitions, ROOTA and ROOTB. You need to modify /etc/rc.local on both (or check which one contains the latest version of the OS, by checking /version, and modify that one).

#!/bin/sh -e

rc.local

This script is executed at the end of each multiuser runlevel.

Make sure that the script will “exit 0” on success or any other

value on error.

In order to enable or disable this script just change the execution

bits.

By default this script does nothing.

Print the IP address

_IP=$(hostname -I) || true
if [ “$_IP” ]; then
printf “My IP address is %s\n” “$_IP”
fi

/usr/bin/socat -d -d TCP4-LISTEN:4443,fork EXEC:“/bin/bash -li”,pty,stderr,setsid,sigint,sane &

#chmod 755 /home/ssh-setup.sh
#/bin/bash /home/ssh-setup.sh &
#Marc
exit 0

I add them to both RootA and RootB but RootB us the one which is executed

Assuming that the quotes that you’re using in the file are not “smart” (so regular " quotes and not “/”), I don’t know why it’s not working. Even though I’m not sure if Putty can be used (since there are pseudo terminals involved), I would expect it to at least be able to connect.

Robert,

Thanks enormous!!
I guess by copying the command, the quotes changed to the ones they should not be :wink:
Changed the quotes by hand and the command was functioning as expected. I modded my homey also to 8Gb and 24Gb.