[RELEASE] CrystalRCM - payload pusher for macOS that works out of the box (no lib installs)

mistyhands

Member
OP
Newcomer
Joined
May 30, 2016
Messages
19
Trophies
0
Age
101
XP
112
Country
Saint Kitts and Nevis
banner.png


I've made a simple GUI fusee-launcher frontend for macOS that has statically linked libUSB, and as such works without having to install anything else. It's a universal binary, so will work natively on M1 or Intel Macs. If any issues arise, please feel free to create one on git or post here. The only downside is the DMG download is ~18MB which is probably a bit large for something this simple.

EDIT: I've updated it with Python that I built for 10.9. Please test version 0.1.1 if you're on macOS below 12.1!

Download | Source



It's also possible to build libusb then create the .app yourself, instructions are in the repo. I plan to add bundled payloads / the option for auto-updating payloads soon, and in the future a version made in Xcode to produce a smaller app.
 
Last edited by mistyhands,

thesjaakspoiler

Well-Known Member
Member
Joined
Nov 20, 2018
Messages
602
Trophies
0
Age
122
XP
795
Country
Afghanistan
This is what I was missing on my Mac!
But could you maybe check the dmg?
After dragging the CrystalDMG to my Applications folder, it says that CrystalRCM is damaged and cannot be opened.
Hopefully it's just something minor.
I'm on MacOS Catalina 10.15.6.
 

TheDoctah

New Member
Newbie
Joined
Jan 26, 2022
Messages
1
Trophies
0
XP
6
Country
Canada
Nice work. I literally keep windows specifically for my switch. I've been using the web launchers but this would make life easier. Thanks
 

mistyhands

Member
OP
Newcomer
Joined
May 30, 2016
Messages
19
Trophies
0
Age
101
XP
112
Country
Saint Kitts and Nevis
This is what I was missing on my Mac!
But could you maybe check the dmg?
After dragging the CrystalDMG to my Applications folder, it says that CrystalRCM is damaged and cannot be opened.
Hopefully it's just something minor.
I'm on MacOS Catalina 10.15.6.
So sorry about this, I'm on Monterey** and I don't think there's a way to test on older OS X versions.

Having looked into it, there seems to be an issue pre-10.7 relating to which Python binary it uses. Tomorrow I'll try and make an additional release, and I can ping you when I do if you'd like. I'm unsure if this even applies to Catalina but it should be a quick fix, as the app builder seems to base it on the current system version.

the issue is the python binary is built to support macOS >= 11.0 on my system. I'll rebuild python itself later today to support older versions.
 
Last edited by mistyhands,

protomouse

Well-Known Member
Newcomer
Joined
Feb 1, 2014
Messages
49
Trophies
0
Age
34
XP
481
Country
Cheers for this! I have a machine running Catalina with Xcode on it. Could have a stab at building the app. I'm surprised you're even able to package Apple Silicon binaries on Mojave. That release is hella old!
 

Tumbleweed

Well-Known Member
Member
Joined
Jul 29, 2018
Messages
143
Trophies
0
Age
38
XP
1,079
Country
Italy
So sorry about this, I'm on Mojave and I don't think there's a way to test on older OS X versions.

Having looked into it, there seems to be an issue pre-10.7 relating to which Python binary it uses. Tomorrow I'll try and make an additional release, and I can ping you when I do if you'd like. I'm unsure if this even applies to Catalina but it should be a quick fix, as the app builder seems to base it on the current system version.

Catalina is not older... Mojave is 10.14.x I'm running Catalina 10.15.7 and same as the other guy running it 10.15.6.. DMG is damaged...
 

mistyhands

Member
OP
Newcomer
Joined
May 30, 2016
Messages
19
Trophies
0
Age
101
XP
112
Country
Saint Kitts and Nevis
Catalina is not older... Mojave is 10.14.x I'm running Catalina 10.15.7 and same as the other guy running it 10.15.6.. DMG is damaged...
Sorry, I got the version names/numbers mixed up.

After looking into it, the python binary on my system has a minimum version of 11.0 based on otool output, and I'm running 12.1.

I'm going to build python for older macOS when I have the time later today or tomorrow, for now, the current solution for versions below 11.0 is to create the .app yourself, and py2app will use the python version on your system. But I'll have a build out ASAP for macOS < 11
 
  • Like
Reactions: Tumbleweed

mistyhands

Member
OP
Newcomer
Joined
May 30, 2016
Messages
19
Trophies
0
Age
101
XP
112
Country
Saint Kitts and Nevis
Cheers for this! I have a machine running Catalina with Xcode on it. Could have a stab at building the app. I'm surprised you're even able to package Apple Silicon binaries on Mojave. That release is hella old!
Honestly, I messed up the OS version names lol. I'm on Monterey, that's my bad.
 
  • Like
Reactions: Tumbleweed

protomouse

Well-Known Member
Newcomer
Joined
Feb 1, 2014
Messages
49
Trophies
0
Age
34
XP
481
Country
Honestly, I messed up the OS version names lol. I'm on Monteafter rey, that's my bad.

Haha, I much prefer their old cat naming scheme.

Anyway, something about .app's signature seems off:

Code:
% pkgutil --check-signature /Applications/CrystalRCM.app
Package "CrystalRCM":
   Status: package is invalid (checksum did not verify)

Code:
% spctl --assess --raw --type exec /Applications/CrystalRCM.app
/Applications/CrystalRCM.app: a sealed resource is missing or invalid

I think the issue may be that the packaging script is deleting stuff from the app bundle after it has been signed. You could solve this by signing it explicitly at the end of the script, replacing the broken signature.

Code:
% codesign -fs protomouse --deep /Applications/CrystalRCM.app
/Applications/CrystalRCM.app: replacing existing signature

Code:
% pkgutil --check-signature /Applications/CrystalRCM.app
Package "CrystalRCM":
   Status: signed by untrusted certificate
   Certificate Chain:
    1. protomouse
       Expires: 2023-01-26 16:16:21 +0000
       SHA256 Fingerprint:
           5B 06 BC 89 EF 97 7E 18 46 93 DA BC F4 28 38 65 E2 45 61 1A 94 35
           AE 24 76 21 D5 88 8D AD 24 CC

I believe the app will appear as untrusted without a legit Apple Developer certificate, but should still be runnable.

For now, there exists a workaround to allow the app to run despite a bad signature:
Code:
sudo xattr -rds com.apple.quarantine /Applications/CrystalRCM.app
 
Last edited by protomouse,

mistyhands

Member
OP
Newcomer
Joined
May 30, 2016
Messages
19
Trophies
0
Age
101
XP
112
Country
Saint Kitts and Nevis
Haha, I much prefer their old cat naming scheme.

Anyway, something about .app's signature seems off:

Code:
% pkgutil --check-signature /Applications/CrystalRCM.app
Package "CrystalRCM":
   Status: package is invalid (checksum did not verify)

Code:
% spctl --assess --raw --type exec /Applications/CrystalRCM.app
/Applications/CrystalRCM.app: a sealed resource is missing or invalid

I think the issue may be that the packaging script is deleting stuff from the app bundle after it has been signed. You could solve this by signing it explicitly at the end of the script, replacing the broken signature.

Code:
% codesign -fs protomouse --deep /Applications/CrystalRCM.app
/Applications/CrystalRCM.app: replacing existing signature

Code:
% pkgutil --check-signature /Applications/CrystalRCM.app
Package "CrystalRCM":
   Status: signed by untrusted certificate
   Certificate Chain:
    1. protomouse
       Expires: 2023-01-26 16:16:21 +0000
       SHA256 Fingerprint:
           5B 06 BC 89 EF 97 7E 18 46 93 DA BC F4 28 38 65 E2 45 61 1A 94 35
           AE 24 76 21 D5 88 8D AD 24 CC

I believe the app will appear as untrusted without a legit Apple Developer certificate, but should still be runnable.

For now, there exists a workaround to allow the app to run despite a bad signature:
Code:
sudo xattr -rds com.apple.quarantine /Applications/CrystalRCM.app
Same, I have no idea about all these mountains lol

Anyway, thanks so much. I've made a new build with Python (and libusb) built for 10.9. Hopefully it should work! I also codesigned it, I'll have to add a notice for that into the script, or maybe an option.
 
  • Like
Reactions: protomouse
General chit-chat
Help Users
    Dark_Phoras @ Dark_Phoras: Me taking a photo with little Veho https://i.redd.it/ibucd7a2om191.jpg