quik icon indicating copy to clipboard operation
quik copied to clipboard

✏️ [ FEAT REQ ] RCS support

Open YannBirba opened this issue 1 year ago • 30 comments

Describe the feature you'd like

Is it plan to support rcs ? Is it possible ?

YannBirba avatar Jun 16 '24 14:06 YannBirba

This is not possible for any 3rd party text app until google makes that api available for public use.

voxvargr avatar Jun 17 '24 04:06 voxvargr

https://github.com/Hirohumi/RustyRcs

It is possible by implementing RCS in the app. However, if one's carrier requires USIM authentication, it will require the system privilege.

If your carrier offers no RCS service, then you need to depend on Google. There has been a proof-of-concept 3d party client for Google's carrier-independent RCS service, though.

ilmaisin avatar Jun 18 '24 21:06 ilmaisin

https://github.com/Hirohumi/RustyRcs

It is possible by implementing RCS in the app. However, if one's carrier requires USIM authentication, it will require the system privilege.

If your carrier offers no RCS service, then you need to depend on Google. There has been a proof-of-concept 3d party client for Google's carrier-independent RCS service, though.

Ooooh nice, I wish I cloud implement it myself but I don't think I can honestly ... But thank you, I reopened the issue so

YannBirba avatar Jun 18 '24 22:06 YannBirba

https://github.com/vidit135g/Replify-Messenger/issues

this qksms fork claims to support RCS, might be easy enough to draw some code from !

theotheroracle avatar Jun 29 '24 22:06 theotheroracle

I wasn't able to get the app running on my phone, so I can't say for sure, but its promising at least

here's some other libraries that might be helpful: https://github.com/android-rcs/rcsjta

theotheroracle avatar Jun 29 '24 23:06 theotheroracle

there's a lot of confusing information about RCS, but I keep reading that carrier rcs is going away and everything is relying on Google messages anyways, so rooted / ROMs android may never get rcs unless we reverse engineer Google messages app, which may be impossible to do anyways, and bypassing play integrity seems like a pipe dream, so this effort may be a pointless endeavor

theotheroracle avatar Jun 29 '24 23:06 theotheroracle

might need to get the EU to step in tbh

theotheroracle avatar Jun 29 '24 23:06 theotheroracle

It's so sad ... Thank you for investigating

YannBirba avatar Jun 30 '24 07:06 YannBirba

one possible way this could work, is if you were to register with https://jibe.google.com/ and not publish the keys i guess ? which means the f-droid release wouldn't have rcs support, but that wouldn't be a deal breaker for most people who wanted RCS i think . it could still be updated through izzydroid, so it wouldn't be too much of an issue . i tried registering for a jibe account, but i kept getting some vague error about how my request couldn't be completed, likely meaning they disqualified my application for some reason, and are being vague about it so as to prevent me from fixing the issue, which is pretty terrible, but i'll try emailing them tomorrow and see if i can get an account .

theotheroracle avatar Jun 30 '24 08:06 theotheroracle

i did manage to install and run the rcs-fi-client locally, but without an account with jibe or some other RCS SIP provider, i can't do much with the software besides the --sim test messages it runs . i do have another sip account, so i'll have to check if that supports RCS and i'll try with that .

theotheroracle avatar Jun 30 '24 08:06 theotheroracle

i did manage to install and run the rcs-fi-client locally, but without an account with jibe or some other RCS SIP provider, i can't do much with the software besides the --sim test messages it runs . i do have another sip account, so i'll have to check if that supports RCS and i'll try with that .

is that working ?

jume2003 avatar Jul 03 '24 09:07 jume2003

Any hopes of getting this at all?

Clyde6790pGIT avatar Feb 15 '25 12:02 Clyde6790pGIT

GSMA has just released an update to the RCS Standard that supports end-to-end encryption, I would love to see this added to this app! https://www.gsma.com/newsroom/article/rcs-encryption-a-leap-towards-secure-and-interoperable-messaging/ @coromjones97

octoshrimpy avatar Mar 15 '25 21:03 octoshrimpy

GSMA has just released an update to the RCS Standard that supports end-to-end encryption, I would love to see this added to this app! https://www.gsma.com/newsroom/article/rcs-encryption-a-leap-towards-secure-and-interoperable-messaging/ @coromjones97

That's the standard for FCC approved mobile service carriers who are implementing the GSMA standard for RCS.

Currently Google is still the only provider of Carrier RCS servicing Android (not sure what Apple does), and all US carriers just pay Google to run and manage their RCS servers. Google's implementation explicitly blocks all Android device RCS except for their Google Messages with Google Play Carrier Services on recognized non-Rooted devices. Even when someone implements a client, it gets blocked by the server "for security" (barebones prototype implementations have been done elsewhere and get blocked immediately by the server).

mtalexan avatar Mar 15 '25 22:03 mtalexan

we are on the same page. I wonder what it would take to spin up an RCS server with interop..

octoshrimpy avatar Mar 15 '25 22:03 octoshrimpy

we are on the same page. I wonder what it would take to spin up an RCS server with interop..

Well you have to get FCC certified as a Wireless Service Carrier to start.... RCS, just like SMS, MMS, and phone calls, requires FCC certification (at least in the US) before anyone will interoperate with you.

The only reason Google was able to do it this way is because they were already certified with their Google Fi. And by declaring it "the new SMS" and setting it up this way, they were able to gatekeep the competition and force the cost for running it onto the Carriers.

mtalexan avatar Mar 15 '25 22:03 mtalexan

Currently Google is still the only provider of Carrier RCS servicing Android (not sure what Apple does), and all US carriers just pay Google to run and manage their RCS servers. Google's implementation explicitly blocks all Android device RCS except for their Google Messages with Google Play Carrier Services on recognized non-Rooted devices. Even when someone implements a client, it gets blocked by the server "for security" (barebones prototype implementations have been done elsewhere and get blocked immediately by the server).

If that is the case, it is probably necessary to get it documented and file an antitrust complaint if necessary. Only thing that we know for sure is that Google has a habit of shadow-banning those who use the official client with a rooted OS, but everything else seems to be nothing but allegations and rumors. What you describe is a textbook case of abuse of dominant market position, but authorities can't act with no evidence.

Apple simply uses what RCS service the carrier offers, and in the Western World it means sometimes Google, but usually nothing. Most European cellular carriers don't care about RCS at all, and thus it is not really a thing here.

Well you have to get FCC certified as a Wireless Service Carrier to start.... RCS, just like SMS, MMS, and phone calls, requires FCC certification (at least in the US) before anyone will interoperate with you.

I don't think that has anything to do with wireless stuff, since cross-carrier communication uses fiber connections in any case. Telephony regs probably will apply, though.

ilmaisin avatar Mar 17 '25 18:03 ilmaisin

Most European cellular carriers don't care about RCS at all, and thus it is not really a thing here.

It actually is, afaik in France most (all?) carriers use Google Jibe for RCS

Google's implementation explicitly blocks all Android device RCS except for their Google Messages with Google Play Carrier Services on recognized non-Rooted devices.

Maybe a workaround could be done with some reverse engineering, in the same vein as microG, but that would certainly not be ideal for an ""open"" protocol

bonswouar avatar Apr 10 '25 18:04 bonswouar

Maybe a workaround could be done with some reverse engineering, in the same vein as microG, but that would certainly not be ideal for an ""open"" protocol

MicroG has been having the same problem. They have the channel for RCS communication enabled, and supposedly a signed-in Google Messages app worked via it at one time. But now there seems to be some system state collection going on and app authentication to the server that explicitly prevents any app except Google Messages from connection from an Android device, and blocks devices that are rooted and/or missing the official Google Carrier Services.

mtalexan avatar Apr 10 '25 18:04 mtalexan

Maybe a workaround could be done with some reverse engineering, in the same vein as microG, but that would certainly not be ideal for an ""open"" protocol

MicroG has been having the same problem. They have the channel for RCS communication enabled, and supposedly a signed-in Google Messages app worked via it at one time. But now there seems to be some system state collection going on and app authentication to the server that explicitly prevents any app except Google Messages from connection from an Android device, and blocks devices that are rooted and/or missing the official Google Carrier Services.

Hmm. What if one just ditches all Google Play stuff, microg and all, and uses a generic RCS implementation to connect? Building one would be a nontrivial task, but it seems that hirohumi has already done a lot.

ilmaisin avatar Apr 15 '25 18:04 ilmaisin

Maybe a workaround could be done with some reverse engineering, in the same vein as microG, but that would certainly not be ideal for an ""open"" protocol

MicroG has been having the same problem. They have the channel for RCS communication enabled, and supposedly a signed-in Google Messages app worked via it at one time. But now there seems to be some system state collection going on and app authentication to the server that explicitly prevents any app except Google Messages from connection from an Android device, and blocks devices that are rooted and/or missing the official Google Carrier Services.

Hmm. What if one just ditches all Google Play stuff, microg and all, and uses a generic RCS implementation to connect? Building one would be a nontrivial task, but it seems that hirohumi has already done a lot.

I'm guessing you're thinking of trying to reverse engineer the Google Messages app enough to spoof it, and supply spoofed client device info to the server as part of the connection?
I'd suspect Google thought of that already, and the MicroG people have probably at least looked into it. I've seen mention somewhere of a dynamic app authentication process with the server, almost certainly to prevent app ID spoofing. Server heuristics are also likely to spot suxh spoofing as well (unless maybe you spoofed being an Apple device?).

mtalexan avatar Apr 15 '25 19:04 mtalexan

How does RCS work on iOS? It only uses carrier support and doesn't rely on Jibe or anything from Google, right?

I wonder if that's easier to reverse-engineer.

dimaryaz avatar Apr 16 '25 17:04 dimaryaz

How does RCS work on iOS? It only uses carrier support and doesn't rely on Jibe or anything from Google, right?

I wonder if that's easier to reverse-engineer.

Based on all the hurdles I've heard of people encountering already, both from MicroG and from other various attempts to create a stand alone RCS tool (including for other platforms than iOS and Android), I would guess Apple has some special authentication mechanism with the servers that they worked out with Google. But I agree that does seem like it might be easier to reverse engineer.

mtalexan avatar Apr 16 '25 17:04 mtalexan

Maybe a workaround could be done with some reverse engineering, in the same vein as microG, but that would certainly not be ideal for an ""open"" protocol

MicroG has been having the same problem. They have the channel for RCS communication enabled, and supposedly a signed-in Google Messages app worked via it at one time. But now there seems to be some system state collection going on and app authentication to the server that explicitly prevents any app except Google Messages from connection from an Android device, and blocks devices that are rooted and/or missing the official Google Carrier Services.

Hmm. What if one just ditches all Google Play stuff, microg and all, and uses a generic RCS implementation to connect? Building one would be a nontrivial task, but it seems that hirohumi has already done a lot.

I'm guessing you're thinking of trying to reverse engineer the Google Messages app enough to spoof it, and supply spoofed client device info to the server as part of the connection? I'd suspect Google thought of that already, and the MicroG people have probably at least looked into it. I've seen mention somewhere of a dynamic app authentication process with the server, almost certainly to prevent app ID spoofing. Server heuristics are also likely to spot suxh spoofing as well (unless maybe you spoofed being an Apple device?).

No, i mean just implementing this specification to the letter: https://www.gsma.com/solutions-and-impact/technologies/networks/wp-content/uploads/2025/03/RCC.71-v3.0.pdf

The caveat obviously would be that it would only work if the carrier supports RCS.

Based on all the hurdles I've heard of people encountering already, both from MicroG and from other various attempts to create a stand alone RCS tool (including for other platforms than iOS and Android), I would guess Apple has some special authentication mechanism with the servers that they worked out with Google. But I agree that does seem like it might be easier to reverse engineer.

I am not aware of any recent effort to implement a standalone FOSS RCS client other than the Hirohumi's one (and I am not sure if anyone has tried to use it on any of the Western carriers that have contracted Jibe/Google for RCS support).

Considering that Apple has been dragging its feet so badly regarding to RCS, and only implemented after it became mandatory in China, I find it difficult to believe that they have made any specific appeasements to Google, until there is concrete evidence. What it comes to MicroG, here it seems that they simply have attempted to make Google's messaging app to function.

ilmaisin avatar Apr 17 '25 17:04 ilmaisin

One thing that might confuse people is that there exists

  • Google's RCS service for Android users, that is independent of the carriers
  • Google's offering to carriers to run RCS services for them.

As an example for the latter, Deutsche Telekom has patnered with Google for an outsourced RCS service. DT's RCS configuration server hostname (config.rcs.mnc001.mcc262.pub.3gppnetwork.org) points to a Google server. This allows them to offer RCS for iPhones and possibly (I haven't seen evidence for or against) to other RCS Universal Profile clients as well.

ilmaisin avatar Apr 17 '25 20:04 ilmaisin

To anyone claiming to know that Google is conspiring with Apple and/or carriers to block third-party RCS clients:

  • Where is that information from?
  • Which client implementation it was? Obviously, Google Messages is not a non-Google implementation, even when it is running on a rooted device.
  • Did it happen with Google's carrier-independent RCS service, or with a telco that has partnered with Google/Jibe to offer RCS support that works with iPhone as well (list here)? To utilize RCS, iPhones need support from the carrier! The service may be outsourced to Google, but it still needs effort by the carrier!
  • When and how did it happen? Logs?

It is pretty serious if Google and Apple are somehow conspiring to keep other RCS implementations from connecting to carrier-offered RCS services, whether or not they are outsourced to Google. However, competition authorities don't have mind-reading powers, and thus cannot act on idle speculation and vague claims alone.

ilmaisin avatar Apr 17 '25 21:04 ilmaisin

Just for information, at /e/Os 3 launch event, Gaël said that RCS will be integrated in the OS. Here is the source: https://peer.tube/w/iTEezgJe8PFTv1qwxYDJ8S?start=28m33s Let's see how they will implement it and on which infrastructure they will rely. I doubt they'll be using Google's servers. At the moment no ETA.

julien-garrigue avatar Jun 09 '25 09:06 julien-garrigue

Just for information, at /e/Os 3 launch event, Gaël said that RCS will be integrated in the OS. Here is the source: https://peer.tube/w/iTEezgJe8PFTv1qwxYDJ8S?start=28m33s Let's see how they will implement it and on which infrastructure they will rely. I doubt they'll be using Google's servers. At the moment no ETA.

He said they want to do it, and they're working on plans for it.

That's better than blowing it off, but I'm not holding my breath.

foolishgrunt avatar Jun 09 '25 13:06 foolishgrunt

@ilmaisin https://docs.jibemobile.com/intro/

Image Google owns Jibe. to even see Jibe's docs, you need a partner account, which the big G can deny you: https://docs.jibemobile.com/access

It is known google has blocked devices that by all means should have access to RCS, but were rooted.

At least in the US, all big carriers use Jibe as their backend, thus creating what would appear to be a western monopoly where G controls access (deja-vu?).

to send RCS messages you need a carrier that supports RCS, or a server that implements Universal Profile spec, which for now it's mostly Jibe and a few Asian ones.

from wikipedia, as you've mentioned:

In 2023, the Chinese state ruled that all new 5G handsets sold in China from 2024 must support RCS.[69] Media reports stated that this decision led to Apple to announce RCS support on its iPhone,[70][71] despite Apple CEO Tim Cook having earlier stated that the company had no plans to support RCS on its devices or any interoperability with iMessage.[72] Google isn't "conspiring" with apple, they both happen to be selfish, and stifling innovation in favor of other options, read: mo' money.

relevant issue from qksms: #1522, and the android API for RCS

Here's a good explanation and knowledge dump of RCS: https://old.reddit.com/r/UniversalProfile/comments/1914dod/will_google_open_rcs_api_2024/lb9pfv6/

I'm not disagreeing with you, just adding more relevant links to the topic for future readers.

as far as implementing verbatim, I also came up empty-handed on finding FOSS implementations. Looks like if carrier supports it we could talk directly to it and bypass G's picky choices. otherwise we would need a server that complies with the Universal Profile standard.

octoshrimpy avatar Jun 09 '25 17:06 octoshrimpy

MicroG has on open issue for this with some potential relevant information. I am linking it here as this seems to be an info dump about RCS and an implementation of it.

https://github.com/microg/GmsCore/issues/2994

Inhishonor avatar Sep 20 '25 21:09 Inhishonor