For anyone who is interested in making an iMessage proxy and has time to spend: There is a legitimate way to interact with the iMessage system with a standard protocol. It requires you to have a host iPhone (no jailbreaking needed).
What you need to have is a Bluetooth adapter with MAP (Message Access Profile) support. Your iPhone will treat all messages from the MAP protocol as if they are from the Messages app. This means it will automatically route your SMS as iMessage if possible (you have no say on what the iPhone decides to do, however). As a bonus, you can also use email addresses as recipients with MAP.
A good place to start probing is the WT32 or WT41u module from Silicon Laboratories. It supports MAP, although it looks like the module supports receive-only [1]. I do not know whether you can hack blueZ to support MAP. I've tried to look at it and I don't think the MAP support for blueZ is complete but I could as well be very wrong. A Raspberry Pi 0 as a bluetooth middleman is very sweet, regardless.
Once that Bluetooth middleman is set up, you can use a public server to relay your messages. The scheme will look something like this:
iPhone <--bluetooth--> (WT41+ESP32)|(Pi0+BlueZ) <--wifi--> MQTT broker <--wifi--> your device of choice.
I am relatively confident that this scheme will work. I just don't have time in my hands to do it. So I figured I could share here. Hopefully, some good hacker will do it and publish it. Happy hacking!
A bit of a shameless self-plug, but it took me 4 weekends to implement iMessage message receiving with BlueZ[0]. Sadly, all I learned about Bluetooth LE and Apple's ANCS will be completely useless when it comes to sending messages, since MAP works over Bluetooth, while ANCS works over Bluetooth Low Energy, and these 2 protocols are almost nothing alike.
The only problem is that any messages that the iPhone received while the middleman was out of range won’t get to your PC, but this’d still be extremely useful for quick replies.
I wonder if the iPhone will accept photos over MAP....
> The only problem is that any messages that the iPhone received while the middleman was out of range won’t get to your PC
That is not a problem. MAP is sort of like the IMAP protocol. You can ask the phone to give you older messages and the iPhone does indeed support that as well.
Moreover, with this scheme, you will likely have to keep the donor host iPhone and the middleman at home and have them plugged in 24/7. So then your middleman doesn’t have to be extremely clever, although it wouldn’t hurt if it was.
> What you need to have is a Bluetooth adapter with MAP (Message Access Profile) support. When you send a message from the MAP protocol, then your iPhone will treat all messages as if they are sent from the Messages app.
What is the “legitimate” reason for this? Bluetooth accessories that can send messages, ideally from the MFI program?
Haha, I don’t know who else besides me who knew about this. I just happened to discover it the other day... night... month ;-) HN is the first platform that I shared this discovery with.
I figured that the ideas are free, the important part is the execution. I hope I didn’t accidentally open the Pandora’s box for the spammers and such. My thought is that programmatically sending iMessages is already doable just needs a lot of mucking around. This just makes it much more convenient.
What you need to have is a Bluetooth adapter with MAP (Message Access Profile) support. Your iPhone will treat all messages from the MAP protocol as if they are from the Messages app. This means it will automatically route your SMS as iMessage if possible (you have no say on what the iPhone decides to do, however). As a bonus, you can also use email addresses as recipients with MAP.
A good place to start probing is the WT32 or WT41u module from Silicon Laboratories. It supports MAP, although it looks like the module supports receive-only [1]. I do not know whether you can hack blueZ to support MAP. I've tried to look at it and I don't think the MAP support for blueZ is complete but I could as well be very wrong. A Raspberry Pi 0 as a bluetooth middleman is very sweet, regardless.
Once that Bluetooth middleman is set up, you can use a public server to relay your messages. The scheme will look something like this:
iPhone <--bluetooth--> (WT41+ESP32)|(Pi0+BlueZ) <--wifi--> MQTT broker <--wifi--> your device of choice.
I am relatively confident that this scheme will work. I just don't have time in my hands to do it. So I figured I could share here. Hopefully, some good hacker will do it and publish it. Happy hacking!
1: https://www.silabs.com/documents/public/application-notes/AN...