Lelo F1S audio control

Hi,

I see Lovense and Kiiroo have the option to sync the device with music/audio.
Would it be possible to do this with the Lelo F1S?

I’ve found the following release:

My device is detected(read below), but I cannot seem to connect to it. Does anyone have any experience with this?

I also have a problems with ScriptPlayer and such. It takes a long time to find the device. I need to turn it on 20-30some times to find and connect with the device. Sometimes even 30 tries isn’t enough.

The Lelo F1s is a little quirky in that it won’t accept commands until you tap the power button after connection. That said there’s a bit of a timing issue that means if you tap it at the wrong time or for too long, the Lelo F1s will power off.

It will not enter the auth even. It should stop blinking and stay on if it’s in connection auth mode.

Can you clarify what you mean by “auth mode”? Apart from the single tap of the power button, the F1s has no known security.

Well, not ‘auth’ per se, but would you call it connection confirming? When I normally connect the device to BT, at first the LED blinks on/off until I try connecting, in which case the LED’s will stay on to show that something is trying to connect. Then you need to press the power button.

Ah, yep, good: we’re on the same page.

And tapping the power button mostly just powers the device back off?

When you tap the power button before it stays lit, it goes into manual mode, instead of BT.

I really wish mine wasn’t in storage right now…

So what happens when you press the power button after Buttplug shows it’s connected and the blue light is constant?

I have managed to get to that part only one or two times. When I did though, I was able to control the device on the playground.
Might it be related to my BT adapter? It’s a Gembird BTD-MINI5

Also, when it did connect, at first I saw 1 instance of the F1s in the device list and later there were 2, but I’m not sure whether the device turned off and I turned it on again.
Would it be possible to remember the MAC address of the device like bluetoothctl does? I imagine connecting to devices would be faster/more reliable this way.

I know the C# implementation kept track of MAC addresses within a session so that rediscovered devices were allocated the same device ID. I’m not sure if that’s true in Rust. There’s no real performance gain, but potentially a UX gain depending on how the client handles devices.

I suspect everything is working as expected: the timing window for pressing the power button is just unpredictably small.

I have an potential fix for that, but it might take a bit to get it in.

With the connection issues of the F1s, it would be useful to have the MAC address saved. It tends to disconnect every once in a while when the top of the device is touched. Perhaps this is something a workaround can be made for?
It loses connection when you touch near the power plug. Perhaps if you could increase the time it takes to drop a device? I of course do not know how Intiface handles this situation as I’ve not got it working for that long to test.

Should the device appear in the list while the light turns constant? If this is the case, then in my case, the device is not being connected to.

I do not think it will ‘go out’ of the connection confirming mode even if Intiface only tries to confirm it for a set amount of time. The LED should remain lit until the device timeouts and powers off. I will report back on this.

Using bluetoothctl, when powering off the bluetooth plug, the device is turned off. This might be due to bluetoothctl performing a clean exit.

Regarding your potential fix, I could help you with the testing if you don’t have access to your device?

I’m pretty sure that once the device is connected, it’ll only disconnect on application close, device power off or interference.

Given the metal construction of the F1s, I wonder if you’re causing yours to short the antenna? If you can reproduce that with the official app, I’d raise it with Lelo.

Unfortunately I can’t remember the colours that the F1s uses.

I should also double check how you’re connecting: I was assuming you were using Intiface-desktop on Linix, but you’re also using ScriptPlayer… So, when it worked in playground, which OS were you running on and where you connecting via Intiface or in-browser?

When you’re not using playground, which client application are you using?

How about when the connection isn’t confirmed within the set time? Is there a set time?

I have raised the issue with Lelo. I was sent a replacement but the issue still remains. I’ve noticed a F1S V2 is being released. Perhaps this will fix the issue. Thanks for the shorting explanation though, I shall raise it again with this in mind, maybe they’ll listen. =)

The colours of the F1s are white. While not connected, it blinks white. While waiting for confirmation, it stays lit white. Once operating, it stays lit white.

I managed to get it working under Windows twice. Once with ScriptPlayer and once in the playground. In both cases using Intiface. Using SoundSync, which is what I’m most interested in, I also managed to see the device once, but not connect to it. The device appeared in the list but the LED kept blinking.

So far I have been experimenting with the Lelo Hub by Fabio Fenoglio. It uses WebBluetooth.

I’ve now managed to get it to connect, more often than before. It seems I need to start the scan at the same time as turning on the device, like with the Lelo Hub implementation.
It connected 5 times in a row, but now has not been working for the past half hour, for 20some tries…

This is while not connecting. Not much info there…
log.txt (6.4 KB)

Sometimes, while scanning for the device, I see the blinking slow down for 1 blink.

When using SoundSync, it worked at times, then at times I got the following error:

VibrateCmd

2020-09-21T21:06:47.913Z : backend : m : Process Log: Sep 22 00:06:47.913 INFO buttplug::server::remote_server: Got message from connector: Err(ButtplugServerError { msg_id: 0, error: ButtplugMessageError(MessageSerializationError(JsonValidatorError(“ValidationState { errors: [WrongType { path: “/0/VibrateCmd/Speeds/0/Speed”, detail: “The value must be number” }, WrongType { path: “/0/VibrateCmd/Speeds/1/Speed”, detail: “The value must be number” }], missing: [] }”))) })

That looks like a bug in SoundSync, but I’m not sure how it’s getting into that state unless it’s running a really old C# client and passing bad data.