#No mouse movement PMW3610

1 messages · Page 1 of 1 (latest)

ocean socket
#

I am on the last leg of my current board that has a trackball in it, but I am having trouble with my PMW3610 sensor, can't seemingly get it to do anything. I am trying to use badjeffs ZMK config but my mouse doesn't seem to move. I feel like I am missing something. I have probed my breakout board, the pins on my microcontroller and for all intense and purpose it should be working. I'm thinking either the PMW3610 is faulty or I have messed up my zmk-config in some way shape or form. Any suggestions on how i can debug this a bit better?

My repo (it's messy):
https://github.com/JakeCoates/zmk-config/tree/trackball_badjeff

I am using the breakout board for the charybdis https://github.com/victorlucachi/charybdis-pmw3610-breakout

As far as i can tell my continuity is all fine, I just don't know how to get logs for whether the sensor is actually working or not!

Any help would be amazing

I have attached my logs

GitHub

Contribute to JakeCoates/zmk-config development by creating an account on GitHub.

GitHub

The version of charybdis using pmw3610 and 3.3V voltage supply - victorlucachi/charybdis-pmw3610-breakout

ocean socket
#

The part i'm not sure about is that it says

[00:00:00.513,610] <inf> pmw3610: PMW3610 async init step 1
[00:00:00.564,025] <inf> pmw3610: PMW3610 async init step 2
[00:00:00.564,300] <inf> pmw3610: PMW3610 async init step 3
[00:00:00.564,849] <inf> pmw3610: Setting CPI to 600 (reg value 0x3)
[00:00:00.565,399] <inf> pmw3610: Set downshift time to 128 ms (reg value 0x4)
[00:00:00.565,734] <inf> pmw3610: Set downshift time to 5000 ms (reg value 0x7)
[00:00:00.566,070] <inf> pmw3610: Set downshift time to 17000 ms (reg value 0x1)
[00:00:00.566,436] <inf> pmw3610: Set sample time to 40 ms (reg value: 0x4)
[00:00:00.566,772] <inf> pmw3610: Set sample time to 100 ms (reg value: 0xa)
[00:00:00.567,199] <inf> pmw3610: Set sample time to 500 ms (reg value: 0x32)
[00:00:00.567,504] <inf> pmw3610: PMW3610 initialized

which makes me think the sensor is set up correctly I must just not be listening to it correctly*

shut crown
#

your right side is central and the trackball is on the central side. it doesnt need all virtual-input things.

ocean socket
#

Ooo let me try and remove. I added it in originally because it wouldn't build when it was referenced in the keymap because the left side didn't have it.

ocean socket
#

Tried removing the virtual logic, and i'm still not getting movement, have i missed something obvious 🤔

shut crown
#

dont remove the input-listeners

ocean socket
#

I think I have added the input listeners back, but it's still not giving me anything unfortunately, is it worth trying to pull down another uf2 with it functioning to test the sensor?

shut crown
#

Keep one either zmk,input-listener or zmk,input-behavior-listener should fetch any movement from sensor. might be the tracllball is too close to the lens. the focus is picky AFAIK.

ocean socket
#

I removed the input-listener and still not responsive annoyingly, i'll try the inverse remove input-behaviour-listener and leave input-listener

I'm trying to move the whole sensor about moving it close and far away... is there any way to tell if the sensor is functioning, I worry if i have just burned the sensor or something

shut crown
#

you got pmw3610: PMW3610 initialized, the spi bus is alright. did you wire MOTION pin on breakout to irq-gpio?

ocean socket
#

Hmm, yeah i just did a continuity check and the motion pin goes to 06 which is what the irq-gpio is set to

ocean socket
#

I tried the inverse too and it also doesn't receive any movement

shut crown
#

try disable ssd1306? i2c0 also uses gpio 0 17. it cant be shared in both

ocean socket
#

Ooo okay, i'm building it now without

ocean socket
#

Still not getting anything, I have done a continuity check on each pin the the super mini and all of them are fine

ocean socket
#

Okay! so I've turned on the dubber for the pmw3610 and found that I am now getting some movement! specifically only when i am trying to take a picture of the sensor

I wonder if the infra red is shot on it?

shut crown
#

do you leave the protective film covering the sensor? peel it off... the built-in laser diode is always switched on afaik, it switches to low power mode by the sensor itself.

ocean socket
#

Yeah i removed the capton tape once i had finished soldering

#

I will play around with the cpi today and things to see if i can get it moving without a camera being pointed at it

#

The lens has some movement too, i am worried its not sitting right

ocean socket
shut crown
ocean socket
#

I think it sits tight, it's just when i am fiddling with it on the table it pushes the lens off so when it's in the case I have it's seated fine

ocean socket
#

I have ordered a new sensor. It will take a while to arrive, but one thing I did notice while plugging in and out my TRRS jack I got this


[00:02:54.331,604] <dbg> zmk: split_central_subscribe: [SUBSCRIBED]
[00:02:54.361,511] <dbg> zmk: split_central_chrc_discovery_func: [ATTRIBUTE] handle 32
[00:02:54.361,541] <dbg> zmk: split_central_chrc_discovery_func: Found run behavior handle
[00:02:54.668,914] <dbg> zmk: security_changed: Security changed: E4:40:81:D3:53:24 (random) level 2
[00:03:04.172,515] <dbg> zmk: zmk_hid_mouse_movement_set: Mouse movement set to -1/-1
[00:03:04.172,576] <dbg> zmk: zmk_hid_mouse_scroll_set: Mouse scroll set to 0/0
[00:03:04.172,576] <dbg> zmk: zmk_hid_mouse_movement_set: Mouse movement set to 0/0
[00:03:06.924,835] <err> spi_nrfx_spim: Timeout waiting for transfer complete
[00:03:06.925,323] <err> pmw3610: Motion burst failed on SPI write
[00:03:07.125,488] <err> spi_nrfx_spim: Timeout waiting for transfer complete
[00:03:07.125,976] <err> pmw3610: Motion burst failed on SPI write
[00:03:07.326,171] <err> spi_nrfx_spim: Timeout waiting for transfer complete
[00:03:07.326,751] <err> pmw3610: Motion burst failed on SPI write
[00:03:07.526,947] <err> spi_nrfx_spim: Timeout waiting for transfer complete
[00:03:07.527,435] <err> pmw3610: Motion burst failed on SPI write
[00:03:07.629,608] <dbg> zmk: zmk_hid_mouse_movement_set: Mouse movement set to -1/-1
[00:03:07.629,669] <dbg> zmk: zmk_hid_mouse_scroll_set: Mouse scroll set to 0/0
[00:03:07.629,699] <dbg> zmk: zmk_hid_mouse_movement_set: Mouse movement set to 0/0
[00:03:08.085,876] <err> spi_nrfx_spim: Timeout waiting for transfer complete
[00:03:08.086,364] <err> pmw3610: Motion burst failed on SPI write
[00:03:08.086,730] <dbg> zmk: disconnected: Disconnected from E4:40:81:D3:53:24 (random) (reason 0x08)
[00:03:08.086,730] <dbg> zmk: disconnected: SKIPPING FOR ROLE 0
[00:03:08.086,822] <dbg> zmk: split_central_disconnected: Disconnected: E4:40:81:D3:53:24 (random) (reason 8)
[00:03:08.086,853] <dbg> zmk: release_peripheral_slot: Releasing peripheral slot at 0
[00:03:08.087,188] <dbg> zmk: start_scanning: Scanning successfully started
[00:03:08.229,858] <dbg> zmk: zmk_hid_mouse_movement_set: Mouse movement set to -1/-1
[00:03:08.229,919] <dbg> zmk: zmk_hid_mouse_scroll_set: Mouse scroll set to 0/0
[00:03:08.229,919] <dbg> zmk: zmk_hid_mouse_movement_set: Mouse movement set to 0/0

Which makes me think it could be shorting somewhere on the ground? I have a ground plane so thinking I might of soldered onto there some how.

shut crown
#

some folks say plugging in/out TRRS will short while n!n is powered on.

ocean socket
#

Update! turned computer on today and it's randomly working (not well, jittery and such)

ocean socket
#

The only thing now is that the movements seem to stutter, these were all smooth single movements. Do you have any suggestions for improving smoothness (it's plugged in via usb-c)

covert karma
#

sometimes I find that the classic rubbing trackball over your forehead trick actually helps with my 3610 setup. Conversely, it could also be dirt on the lens / trackball causing issues

ocean socket
#

I will have to give it a go! I find the lens can move out of the perfect spot occasionally which is really annoying, tempted to glue it but it's a risk

tulip cypress
#

Hi, guys. I recently soldered pcb (https://github.com/siderakb/pmw3610-pcb) with pmw3610 sensor. I am trying to debug sensor because i have no mouse movements. Due to debug console I found out that sensor is successfully initialized. I started to move my phone's flash to the sensor and finally see small and rough mouse movements. Is my sensor is broken?

GitHub

PMW3610 laser mouse sensor breakout board, support both 3.3V and 1.8V logic - siderakb/pmw3610-pcb

ocean socket
#

Do you have
CONFIG_PMW3610_LOG_LEVEL_DBG=y
set ?

This allowed me to dial in my sensor a little bit.
Do you have your ZMK repo available? I found that my board had shorted at one point and the microcontroller itself was causing issue, I replaced it and it has been a bit better.

#

When I was 3d printing my holder for the ball too, trying different distances apart really helped me

#

The lens also really matters, I find it doesn't always sit flush against the punch out for the diode, so making sure it's in the right position is helpful

tulip cypress
ocean socket
#

If you can't see that flash at all, then maybe. You will only be able to see the light with a camera, part of the issue is the sensor will go into a lower power mode where it will flash infrequently.

#

I managed to get the one I had up there working with some toying around

#

but I will say the lens does shift occasionally and makes it useless

tulip cypress
#

I don't see any light at all even with my phone camera, but I can register movements with my flash light phone(

#

But I can move my mouse with my sensor if I move it on flash light of my phone)

ocean socket
#

Hmm, I'm not sure then I feel like if the diode wasn't emitting it would fail to initialise?

#

Are you able to check the appropriate pins making sure they are all getting the correct voltage too? thinking that maybe you're only powering part of the sensor?

#

If i remember looking at the data sheets VDD and VDDIO need power

tulip cypress
#

Yes, I checked all the voltage level and checked pcb twice(

tulip cypress
ocean socket
#

Ah that's great to hear ! I was about to say I didn't know what to suggest next