yetanothercarbot / readyforpy

Python desktop app for Motorola Ready For
22 stars 1 forks source link

Software update needed #1

Open ghost opened 2 years ago

ghost commented 2 years ago

Screenshot_20221023-174615-034

motorola edge 5G UW (2021) Android Version: 12 Build Number: S1RMS32.68-43-13-3

yetanothercarbot commented 2 years ago

Looks like they added a fair amount of new features in the newer Ready For version. I'll have to reverse engineer it soon to see how much I can implement in readyforpy. Thanks for letting me know.

tsanecki commented 1 year ago

Same error on Edge 30 Neo (Android 12). Please let me know if you need any feedback/testing.

yetanothercarbot commented 1 year ago

I've finally gotten a Windows PC and some time so I should be able to take a look at this over the next few weeks. I apologise for the delay.

ghost commented 1 year ago

It's all good. I'm the original issue creator by the way. Due to some external issues I had to delete my account.

I'm still encountering the same issue, this time on S1RMS32.68-43-16-3. Thank you for all the work you're putting into this.

Nindaleth commented 1 year ago

Hi, I'm also interested in having this working on Android 12 Motorolas. In case it matters, I'm on Edge 20. Thanks for taking a look!

7Mik commented 1 year ago

Is there any way we can contribute? I would be interested in helping

JoaquinDecima commented 4 months ago

Hello, how is it going?

I am revising this to know if further development is planned, what can we collaborate on?

I am with a Moto Edge 40 and now I change the name to Smart Connect

If you can help with anything, let us know so we can continue with this.

yetanothercarbot commented 4 months ago

Sorry, I thought I had commented earlier in the thread but apparently did not.

I'm not actively working on this, mainly because I have little use for Motorola's convergence features and because of limited time.

I will test, accept & merge PRs if they expand functionality (such as for Android 12+ support) or fix bugs.

Regarding Android 12 support: The newer versions of Ready For/Smart Connect are a significantly different beast to the initial version that I was targeting.

Sadly, I don't think it's possible to automatically target different the different versions, though I might be wrong. The phone throws the error because the version tag in the QR code is lower than it is expecting - the current version of smartconnect uses 7.0.0, where ReadyForPy uses 1.6.60. If we do end up adding A12+ support, I might archive this version under a different branch for users on A11.

My initial guess for the protocol would be that it isn't REST-based anymore but websocket based instead - with some luck, this shouldn't be too difficult to figure out. Just some dumping and guesswork. The QR code gives both the host IP and the port on which the websocket server is listening.

It also seems to be doing something with mDNS to decide whether the phone is online or not.

(This actually seems simpler than I originally anticipated, and I may have a play around with it, and document whatever I find - I can't promise anything coming of this though.)


EDIT 15/06/2024

I'll start adding discoveries as addendums to this comment, to prevent email spam.

Alright, so. The QR code the new version of Smart Connect generates looks like this:

motorolardpconnection{"version":"7.0.0","wsData":{"cmd":1,"deviceId":"KLlqcowQc4RXLxczYQznxQ==","deviceName":"[removed]","fp":"TAVlBk+gN7GfKIho/uupJAbpk5SFMRCridKl4yLf7lg=","token":"ccPUxD5us8FElUUJ3hNBsBnwbJQcuQvuiyYDOYSipWYh","policies":[{"wifi":["10.0.0.238","172.29.48.1","192.168.56.1"]}],"wsPort":50079,"appVer":"07.0.0.012.000","verCode":700012000,"os":6,"scType":2,"type":4,"serviceId":19}}

There's a few new fields (e.g. deviceName, wsPort) that are fairly self explanatory. There are some fields which have moved/renamed but are still there from before - e.g. token was previously generated by hashing hardcoded strings, together with some host information (located here. I'm not sure if the value of the token is actually important, or if it is just used as a secret to validate the phone connecting scanned the QR code; that will require testing. If the value is important, hopefully they haven't changed how it is generated.

There's also quite a few fields which seem to be new - unfortunately when I wrote this program originally I didn't consider what other fields exist and I ignored at the time. The cmd, scType, type and serviceId fields might be important.

Dark-Kernel commented 1 month ago

Guys, any update on this?

yetanothercarbot commented 1 month ago

Ah, sorry; I must admit that I've switched to a Pixel 8a now - my Motorola device had become somewhat problematic. It's functional enough that I can test code but frustrating enough to make development difficult.

As such, I can test PRs but I won't be able to develop further - I'm very sorry for the inconvenience but there's not much I can do about it at this stage unfortunately.