Support for More Camera Models
I saw the readme:
Nikon cameras that support the remote wireless controller (ML-L7) should work, use the "Connection to remote" menu option. This has been tested on a Nikon COOLPIX B600. Unfortunately, the remote wireless mode has no support for GPS or focus functions, thus only shutter release works. Note that other Nikon cameras will appear in the scan, but will not pair (further support is under investigation).
I have a Nikon camera(Z30), and want control it. I think it will be supported(because it can use ML-L7).
I want to know how do you find the UUID? is there some document for how to get it?
const NimBLEUUID REMOTE_SHUTTER_CHR_UUID {0x00002083, 0x3dd4, 0x4255, 0x8d626dc7b9bd5561};
And, you said that it not support focus, I have an diea: we can use an android device, run SnapBridge(Nikon app, use BLE control camera), and watch the BLE log, but it is inconvenient, is there any good way?
Thanks!
@gkoh
oh, I miss some documents, use HCI log!
but, SnapBridge have focus button. I guess we can do the same things.
A few questions, so a few replies.
I have a Nikon camera(Z30), and want control it. I think it will be supported(because it can use ML-L7).
Yes, the Z30 should be supported according to Nikon's compatibility guide.
I want to know how do you find the UUID? is there some document for how to get it?
As you noted, I typically use the Android HCI log. Except, I had an ML-L7, so it wasn't the same method. Instead, I used nRFConnect (a BLE app from Nordic Semiconductor) to scan and connect with the camera to dump the list of characteristics advertised. I was then able to clone the BLE server characteristics to create a fake camera, pair the ML-L7 to the fake camera, then capture the button presses.
And, you said that it not support focus
Your involvement is timely, I have not been able to access a new Z camera. The ML-L7 does not have a focus button and I could not any way to do focus with the remote UUID 🙁 Also, my camera (B600) does not support BLE remote in Snapbridge, so I have no traffic to analyze 😢
We need to be clear, Nikon cameras have 2 connection modes:
- Remote device
- Smart device
Remote device
This is ML-L7 mode and currently supported.
Smart device
I have spent significant effort on this for many, many months. I have a problem though, in this mode, the B600 changes from BLE to Bluetooth Classic halfway through handshake to do the bonding. While the ESP32 does support Bluetooth Classic, the library (NimBLE-Arduino) I used is BLE only and rewriting it (to use Bluedroid) is a large effort (I will eventually, but do not have time right now).
There is a possibility the Z30 does not swap to Bluetooth Classic as a newer device. If you are able to capture a HCI log during pairing, that would be invaluable. My current work is in this branch: https://github.com/gkoh/furble/tree/nikon-smart-device-support
Working out the Nikon smart device handshake has been an incredible challenge, so much so that I started to document the process on the blog: https://blog.furble.net/posts/nikon-ble-reverse-eng-p1/
Many thanks for your detail replies, and thanks for your project and dedication.
Unfortunately, I use M5StickC Plus2 can not connect to Z30(already latest firmware), I don't know why.
For now, I return to use smartphone as instead. I found that the button of M5StickC Plus2 is very hard to click! That's why I dont want to continue. 😄
And I need to say, this project is very awesome and very useful!
Image that we can design some trigger device based on this project/controller.
Finally, is it possible that request Nikon publish the protocol? I have no idear that way they must keep this secret! 😄 As we known, Nikon have C# SDK (maybe use USB).
Thanks
Many thanks for your detail replies, and thanks for your project and dedication.
Thank you for the kind words, you are most welcome.
Unfortunately, I use
M5StickC Plus2can not connect toZ30(already latest firmware), I don't know why. For now, I return to use smartphone as instead. I found that the button ofM5StickC Plus2is very hard to click! That's why I dont want to continue. 😄
This is perfectly OK, we are here to use our cameras, not struggle with useless things. If you do wish to try again, please feel free to raise an issue or discussion.
And I need to say, this project is very awesome and very useful! Image that we can design some
trigger devicebased on this project/controller.
👍
Finally, is it possible that request Nikon publish the protocol? I have no idear that way they must keep this secret! 😄 As we known, Nikon have C# SDK (maybe use USB).
Nikon are well known for protecting their protocols. I personally do not think they would be interested, but I encourage you to try and ask.
@gkoh, many thanks for your work! I took a look at the nikon-smart-device-support branch and it looks like that you completed the smart device pairing. Is this correct?
If yes, I'd like to test it when my new camera (Nikon Z6III) arrives.
@gkoh, many thanks for your work!
You are most welcome 👍
I took a look at the nikon-smart-device-support branch and it looks like that you completed the smart device pairing. Is this correct?
Unfortunately not. For my Nikon COOLPIX, I cannot finish the pairing without changing the Bluetooth library used. There is a possibility that newer Nikon's do not need this, however I need someone to prove (or disprove this).
If yes, I'd like to test it when my new camera (Nikon Z6III) arrives.
If you are somewhat technical, I would like to ask for an Android HCI log with such a newer camera. I have a suspicion it is possible that newer Nikon's are Bluetooth LE only, but this is just a guess. Please let me know if you are keen to get involved.
In the current state, the branch will forcefully fail the pairing.
@gkoh, when I receive the camera, I'll try to get the HCI log!
@gkoh, when I receive the camera, I'll try to get the HCI log!
@herrfrei Great! The Z6III should be new enough for us to either:
- make it work with the existing BLE library
- force me to admit I have to integrate another library
If you do get the HCI log, please send to me at 'guorong.koh' AT 'gmail.com' Please do not attach it here.