-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unable to connect to MOVE #25
Comments
I guess this is because you're using the new firmware? Bluetooth standard. Has anyone has success accessing the blinds with this new firmware? |
That could be it. I wasn't aware there was a difference in bluetongue protocols depending on firmware. Have you a source of or more information on this? |
I do not have a MOVE unit, however I am aware of some previous issues related to MOVE connectivity that were thought to be a result of the MOVE unit enforcing a random source address. Can you try temporarily replacing |
Thanks for your help, I tried that and i'm getting this message now
|
I've just updated one of my old MOVE devices that used to work using this library and it is no longer working. It appears the firmware update breaks compatibility with this library somehow. |
Can you make sure that the move is the only BT device connected and post a packet capture / HCI snoop log resulting from sending one or more commands to the device using the official app?
Make sure that the CSRmesh network PIN used is not a PIN you use for other things, and that you don't have any other Bluetooth devices active so you don't expose potentially private data in doing such however.
…On February 26, 2018 6:40:00 PM CST, klimbot ***@***.***> wrote:
I've just updated one of my old MOVE devices that used to work using
this library and it is no longer working. It appears the firmware
update breaks compatibility with this library somehow.
--
You are receiving this because you commented.
Reply to this email directly or view it on GitHub:
#25 (comment)
--
Sent from my Android device with K-9 Mail.
|
@nkaminski I have attached my snoop log. I followed the following procedure
My move mac address is c1:43:18:00:00:01 |
I will take a look at it this weekend. Also, what is the 4 digit network PIN you used when you created this log? FYI if you want to see the contents of the log file, open it in Wireshark.
…On March 2, 2018 8:01:25 AM CST, beanian ***@***.***> wrote:
@nkaminski I have attached my snoop log. I followed the following
procedure
1. Enabled snoop log
2. connected to MOVE device
3. Issued a blind up command
4. issued a blind down command
Hopefully this makes sense to you
[btsnoop_hci.log](https://github.com/nkaminski/csrmesh/files/1775291/btsnoop_hci.log)
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
#25 (comment)
--
Sent from my Android device with K-9 Mail.
|
@nkaminski the network key is 8888. |
@nkaminski Did you get a chance to look at this? |
I had gotten sidetracked with a few other priorities. Will look at this tonight.
- Nash
…On March 12, 2018 9:39:30 AM CDT, beanian ***@***.***> wrote:
@nkaminski Did you get a chance to look at this?
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
#25 (comment)
--
Sent from my Android device with K-9 Mail.
|
OK so this still looks like CSRMesh traffic, which is good. Possibly the format of the payload is what has changed. Going to revise my decryption tool slightly to make it easier for all (including myself) to analyze and see what has changed. |
Any progress on this? I'm having the same issue since updating the firmware and it would be much appreciated if you could find a solution. :) |
I should be able to look into this more this weekend. |
@nkaminski any luck? |
@Swiftnesses Yes, one of the issues is that the 2 BTLE handles that the data is sent to has changed. Can you test with the move-experimental branch and let me know if you still see this issue?
If you do still see this issue, I have finished building my analysis tool, csrmesh-util, that can encrypt and decrypt raw data so that we can investigate further.
- Nash
…On May 11, 2018 4:30:07 PM CDT, Swiftnesses ***@***.***> wrote:
@nkaminski any luck?
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
#25 (comment)
--
Sent from my Android device with K-9 Mail.
|
@nkaminski Just fired up the RP I used to test this some time ago... Trying to remember the commands :) Have the commands changed with your new exp. branch release? |
Seem to be hitting an error upon install: |
Seems I needed to run: sudo apt-get install libglib2.0-dev |
Tried issuing this command: sudo ./bin/csrmesh-cli move --pin 263056 --dest EE:16:B0:00:00:04 --position 120 I get: [+] Connecting to device EE:16:B0:00:00:04 |
Interesting, so it isn't even connecting to the device. I've made another experimental change to the move-experimental branch where random source addresses, as opposed to a fixed, public address are used. Some BTLE stacks only accept one type of address or the other. Can you retest?
…On May 13, 2018 4:18:47 AM CDT, Swiftnesses ***@***.***> wrote:
Tried issuing this command:
sudo ./bin/csrmesh-cli move --pin 263056 --dest EE:16:B0:00:00:04
--position 120
I get:
[+] Connecting to device EE:16:B0:00:00:04
[-] A connection error has occured: Failed to connect to peripheral
EE:16:B0:00:00:04, addr type: public
[-] Connection to mesh failed
[-] Operation failed
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
#25 (comment)
--
Sent from my Android device with K-9 Mail.
|
@nkaminski I can just make the changes to the file on my pi, right? No need to rebuild etc? |
Yes, but make sure you edit the correct copy of the file if you have installed it system-wide or virtualenv-wide.
…On May 14, 2018 8:36:14 AM CDT, Swiftnesses ***@***.***> wrote:
@nkaminski I can just make the changes to the file on my pi, right? No
need to rebuild etc?
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
#25 (comment)
--
Sent from my Android device with K-9 Mail.
|
@Swiftnesses Also, I would recommend using a 4 digit PIN since my library will not handle PINs with a length other than 4 correctly at the moment.
This will be easy to implement if you can provide a Bluetooth packet capture of the resulting traffic when a PIN longer than 4 digits is used however.
…On May 14, 2018 8:36:14 AM CDT, Swiftnesses ***@***.***> wrote:
@nkaminski I can just make the changes to the file on my pi, right? No
need to rebuild etc?
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
#25 (comment)
--
Sent from my Android device with K-9 Mail.
|
Same error as before, with the exception that the error message now states 'random' |
The new app generates 6 digit pins, I'll override it however and re-add some devices to test! |
@nkaminski created a new 'place' with a 4 digit pin and re-added the devices. Tried with the both experimental versions (with and without random). Sadly, no luck :( |
@beanian I'm not great with debugging (no wireshark), can you perhaps help us too? |
My dreams of integrating these into my home automation schedule are slipping away, perhaps it's time to look for an alternative 😢 |
Did you kill the app on your phone before sending the commands? |
@andrasj I'd love to somehow implement the confirmation event into my Node JS script, is this returned via CSRmesh, or do I need to use something else? Did you turn anything else up with regards responses, it's obvious the app has little / no issues and seems to work pretty well tbh! @nkaminski do the responses above make sense to you? |
Hey Guys. Any Solution ? When not Move is dead in my House in FHEM :) |
Hey, Iam new to Github und following this project quite a while. I have two Move Units and had it up and running with csrmesh und raspberrypi. Today I received a Mail from OmniaBlinds, that they are not selling them anymore and that I can buy a newer better blind motor from them.... The teptron website is under construction now. Now I want to contribute to this project, because from now on, we are on our own and I dont want to throw the units to the trash. Invested to much money. |
This issue has been idle for quite some time; is there still interest in advancing this given that the move units are no longer readily available? |
Yes, I'm still interested. |
Short answer: yes To be honest, I'm afraid that one day, the official app will no longer work (on newer phones), but it is still needed for initializing the meshnetwork and pin (at least afaik). For this reason, I already hoped someone knew a way to replace the firmware of the device. I think most of us only need a BLE/IO-gateway and could do automations from another system. With a 'simple' open source FW (if possible at all on csr-chips), it would be much easier to develop/integrate the product. |
Open source replacement firmware is an interesting thought. However as I don't have a move unit myself and therefore don't know anything about the hardware platform used, I would be dependent on someone with one to take a few internal photos and provide visible part numbers or similar hardware identifiers. That should give us an idea of how easy or difficult it would be to develop and flash a replacement firmware. That being said, it sounds like the current major issues interfacing with the proprietary V2 firmware are the fact that the MAC address changes after every boot and that the provisioning process requires the now-unsupported app. Agree? |
about interfacing with v2, the changing MAC is an issue, but since the network still advertises itself as 'MOVE', it is possible to implement a workaround. about the hardware: some documents can be found on https://fccid.io/2AICLM1508 , the original crowdfunding campaign mentioned CSR1010 , in the user manual the technical section says: |
@andrasj If you have access to a multimeter: when assembled and powered with batteries or USB, what voltage level do you see between the leftmost and 4th from left as well as leftmost and 5th from left pin (in orientation of photo) in the pin header that is partially visible at the top right of the main board? From your photo, I can see that the pin count as well as location of the ground pin on that header is consistent with the FTDI style serial pinout. If this is indeed a serial header, it is very possible that this port may still be active even though USB serial has been disabled. |
the 2 outer pins seem to be connected, they had exactly 0V, between the left and the middle 4 pins it was kind of floating between 20-30mV. When measuring while powering up, I could see a short peak of higher voltage (or it might be an artifact of my simple multimeter). If it's a serial, I guess I should be able to measure 0 Ohm between the pins and the Rx/Tx pins from one of the controllers? |
Correct regarding the fact that you should see zero ohms resistance between the serial pins on the header and the respective microcontroller pins. However, my suggestion to measure voltage was based off of the fact that an enabled but idle TTL serial port will drive it's Tx line high. Therefore it looks like this either isn't a serial port or isn't active. |
I looked for the open contacts, it seems they are debug/programming headers for the controllers. The ones around the atmel are the debugging lines for the ATTiny, and according to the datasheet they can be used for serial programming the chip. |
Atmel MCUs are very familiar to me, and these are exactly the lines you need to read and write the flash on such. You will need a 3.3v logic level Arduino or avrisp and the avrdude utility (open source) to do so.Also makes me wonder if all/most of the motor control functionality is implemented on the attiny and if the SPI bus is also used for communication between MCUs.NashOn Feb 8, 2020 12:09 PM, andrasj <notifications@github.com> wrote:I looked for the open contacts, it seems they are debug/programming headers for the controllers.
The ones in the corner next to the USB-connector are debug lines for the CSR-chip:
1 -> CSR pin GND
2 -> CSR pin 18: DEBUG_CLK : debug SPI CLK selected by SPI_PIO#
3 -> CSR pin 19: DEBUG_CS# : debug SPI chip select (CS#) selected by SPI_PIO#
4 -> CSR pin 20: DEBUG_MOSI : debug SPI MISO selected by SPI_PIO#
5 -> CSR pin 22: DEBUG_MISO : debug SPI MISO selected by SPI_PIO#
6 -> CSR pin 26: SPI_PIO# : Selects SPI debug on PIO[8:5]
The ones around the atmel are the debugging lines for the ATTiny, and according to the datasheet they can be used for serial programming the chip.
1 -> AT pin 25: PC6 (RESET/PCINT14)
2 -> AT pin 15: PB5 (SCK/PCINT5)
3 -> AT pin 13: PB3 (PCINT3/MOSI)
4 -> AT pin 14: PB4 (PCINT4/MISO)
5 -> AT pin 4: GND
6 -> AT pin 3: VCC
—You are receiving this because you were mentioned.Reply to this email directly, view it on GitHub, or unsubscribe.
|
Thanks for the quick feedback, I'm not familiar with atmel (little experience with PCI & ESP), but it looks like I could use/flash a spare ESP (which is 3.3V) to use as an avrisp. There is even some hope for flashing the CSR-chip: https://github.com/lorf/csr-spi-ftdi Based on looking at the pcb-traces & datasheets I'm currently asuming: There are several things which could be done: Only the first idea could help people who don't want to open up their device (and maybe the last if we could find a way to upload the FW over serial/usb). And since the shell of the device is glued together it won't be easy to open up all devices to get close to the hardware to modify or reflash. Sometimes I'm thinking it's easier to rebuild it from scratch, but at least this way I learn new stuff and I am having fun :-) |
Two years later.. MoveDeviceConstants Wake up procedure Note |
Amazing work, I still have 10 of these in use (using a pi as a custom API interface), mesh never worked, so I directly talk with each unit using MAC (which kills me as it changes upon reboot!). Following progress here, great work! |
I once tried to use command MOVE_CMD_GET_DEVICE_NAME, without success, but I based it on the orignal/official doc released, which used 18 instead of 66. So the old doc is definitely different from the values above. (probably the old doc is obsolete). |
ApkStudio to decompile the android app and then Android Studio to easily navigate the project. Though much of the code will be nonsense, i.e random class, method and variable names, much can be deducted by context. Fortunately, many classes are found almost completely intact. |
@Maatss thanks for the info about apk-decompiling, it was (and will be) very useful. Meanwhile I've tried to create an application which gets as close as possible (on the bluetooth-level) as the official MOVE-app. I have some progress and data to share. It looks like now I'm able to get data back from the device (so able to detect packet loss or unresponsive device).
With the help of the java-code and decryption routines, I could analyze what is (or should) happen to control the device. Here is what's happening at BT-level:
Currently, I'm able to:
Attached you can find 2 captures of my test scenario, one captured from a phone with the offical app, and one from my testApp on PC Next steps: @nkaminski : do you have any idea how the data comming from the device could be decrypted? how did you manage to make it work for data sent to the device? Response on 'GetStatus' in 2 ATT-messages: current info on responses: Edit: sorry for the long post, but I think it might be worth as a summary of workings with data-captures |
Follow up: After digging through the obfuscated code, I managed to find the decryption routine for responses/notifications. |
This evening I performed some tests with multiple devices. Seems to work (but not that reliable).
|
@andrasj Excellent work on reversing the decryption flow for the responses! Is it similar to the device -> mesh crypto schema? Regarding correlation of requests and responses, does the acknowledgement response to a command include the sequence number of the original command? Possibly csrmesh takes cues from similar standardized protocols like TCP in this regard; that would make packet loss easily detectable. Regarding RE of the official app, another worthwhile tool (at least in my opinion when reversing the outgoing message crypto) was IGLogger (https://github.com/intrepidusgroup/IGLogger). Instrumenting calls to the Java crypto APIs in the offical app made it pretty straightforward to identify the crypto functions involved and the inputs to such, providing a really nice starting point in the heavily obfuscated code. |
I've spent some time again with the moves, and here is some additional protocol description:
Currently, I think we have enough information to reliably create/use the MOVE-devices for daily use (not provisioning/calibrating). So I think I'm going to try to get latest bluez working on my NAS, and design some mount to put the device directly on the rail of my blinds. |
@andrasj: that's wonderful news. Looks like the final pieces are finally found? |
Hi andrasj, |
I'm hopping around on personal projects, this one's been ignored since my last update... |
Hello @andrasj, I was meant to check-in months ago, but it slipped my mind... 2020 huh :) I'm still using the script from here to address each Move blind directly (via ID) - as I cannot figure out how to issue a mesh wake first. I seems you've really improved the implementation of commands (speed etc) and are also getting data back, i.e. battery? How can we add these commands to the script here? Many thanks in advance, oh and Happy Christmas to you (and the others following!). |
Thanks for triggering on this project, but my devices are still in the drawer... and they were meant to be installed years ago :-) . Summary of what I think are required changes compared to the current script-logic:
I won't have time to work on this in the coming weeks, but I'll try to answer questions, if any... |
When I execute hcitool lescan I can see the MOVE2 which i'm assuming is my MOVE device. (I have noticed it is not CSRMESH like others have seen)

Executing the cli results in the following error:

Any ideas?
The text was updated successfully, but these errors were encountered: