Git Product home page Git Product logo

deskhop's People

Contributors

gusher123 avatar hrvach avatar jalmeroth avatar kpfleming avatar samuelmarks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

deskhop's Issues

Function with one computer connected

In issue 1, eproxus asked if the DeskHop would work with only one computer connected (for example, a laptop has been disconnected from the DeskHop while a desktop computer remains connected to the DeskHop). With the current design, the DeskHop will not function with only one computer connected. This is because the DeskHop comprises two Picos, each powered independently by the computer connected to it via USB.

With one computer connected, it might be possible to use that single USB to power both Picos (with diode or-ing), but it would require connecting USB A and USB B grounds together and that may create a ground loop.

Could use an external 5V supply to power both Picos.

Discuss the problem and suggest solutions below.

USB HUB: Only one device is recognized

First of all, thank you very much for this project! The idea, documentation and the quality of models/schemas are amazing! It was a pleasure to build this device, everything went smooth

The update from yesterday indeed enabled partial support of USB HUBs. However, there's an issue I'm facing with mine:

I use Ugreen USB switcher (https://www.amazon.co.uk/dp/B01N6GD9JO?ref_=cm_sw_r_cp_ud_dp_8NEX4KNSA6PH3T8T8QWG), I've connected my keyboard and mouse into 2 USB ports (2 other ports are empty). However, only one device is recognized by Deskhop.

When I switch outputs on Ugreen, or if I simply unplug and plug it in - only keyboard is recognized and works. The mouse is not detected.

In case I try to unplug the devices from the HUB and plug one by one - only the first device is recognized. For example, if I plug the mouse first and then the keyboard, only the mouse will work. It doesn't depend if the USB HUB is connected to A or B.

Is there any other debug info I can collect (I use Linux on both computers, in theory a Windows one is available)

Logitech MX Mechanical

Hi there,

thanks for this awesome project! ๐Ÿš€

Unfortunately, I have problems running my Logitech MX Mechanical keyboard with latest firmware release. So I followed the troubleshooting guide and it works using the provided test firmware.

So following the guide, here are the descriptors from usbhid-dump while the USB dongle is directly connected to a Linux maschine:

003:030:002:DESCRIPTOR 1707999030.135855
06 00 FF 09 01 A1 01 85 10 95 06 75 08 15 00 26
FF 00 09 01 81 00 09 01 91 00 C0 06 00 FF 09 02
A1 01 85 11 95 13 75 08 15 00 26 FF 00 09 02 81
00 09 02 91 00 C0

003:030:001:DESCRIPTOR 1707999030.136754
05 01 09 02 A1 01 85 02 09 01 A1 00 95 10 75 01
15 00 25 01 05 09 19 01 29 10 81 02 95 02 75 10
16 01 80 26 FF 7F 05 01 09 30 09 31 81 06 95 01
75 08 15 81 25 7F 09 38 81 06 95 01 05 0C 0A 38
02 81 06 C0 C0 05 0C 09 01 A1 01 85 03 95 02 75
10 15 01 26 FF 02 19 01 2A FF 02 81 00 C0 05 01
09 80 A1 01 85 04 95 01 75 02 15 01 25 03 09 82
09 81 09 83 81 00 75 01 15 00 25 01 09 9B 81 06
75 05 81 03 C0

003:030:000:DESCRIPTOR 1707999030.137775
05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01
75 01 95 08 81 02 95 05 05 08 19 01 29 05 91 02
95 01 75 03 91 03 95 70 75 01 05 07 19 04 29 73
81 02 95 05 19 87 29 8B 81 02 95 03 19 90 29 92
81 02 C0

Do you need anything else? Do you need the descriptor of deskhop while the connector is connected to it?

Thanks again,
Jan

Different screen dimensions and mouse switching

Wow, what a great project this is!

I have tried to use the deskhop on one system with three monitors attached where the monitor in the middle has different dimensions than the outer two, and the other system is a laptop with its own screen. This seems not to work so well. I don't know if it's a soldering mistake, windows (laptop) vs Linux (three monitor system) or the discrepancy between the monitor resolutions, but on the three monitor system the mouse does not move at all, and on the laptop (when switched to 'B') the mouse can only move horizontally at the top of the screen.

Would it be possible to change the firmware in such a way that the mouse just switches as is between two systems? I realise that the seamless experience won't work as well, but the ability to change between the two methods might give more flexibility in complex scenarios.

Please keep up the good work :)

suggestion - one of the devices as bluetooth

It would be cool to use a bluetooth module for one of the devices.
Then all the stuff can be inserted into a keyboard and the keyboard cable reused for power. The second device could be connected by bluetooth. Maybe even allow to pair with multiple devices.

mouse speed x/y

Just finished my first deskhop - so cool!

I use a Linux Desktop with dual screen on board A and a Linux Phone Desktop on board B.

I have the following in my user_config.h:

/* Output A values */
#define MOUSE_SPEED_A_FACTOR_X 1
#define MOUSE_SPEED_A_FACTOR_Y 128

/* Output B values */
#define MOUSE_SPEED_B_FACTOR_X 128
#define MOUSE_SPEED_B_FACTOR_Y 1

And still on the dual screen desktop on board A the horizontal movement is really fast and the vertical movement too slow.

On the Linux phone horizontal movement still could be a bit faster and vertical movement is just fine.

Did I miss(interpret) something or is it just that the size of the phone (board b) screen using 720x1440 and the desktop (board a) screens 1920x1080 + 2560x1440 side by side is to different?

Rotary button on Glorious GMMK Pro keyboard does not work

When attaching a Glorious GMMK keyboard to the deskhop the rotary encoder does not work. The keyboard is configured with Via firmware (https://www.caniusevia.com) which is built upon QMK firmware.
I have mapped the encoder to KC_VOLD (volume down), KC_VOLU (volume up) and KC_MUTE (mute by pressing the encoder). Could it be that media keys are somehow not getting through?

Support more types of USB devices, act like a USB hub?

Is it possible to support more types of USB devices? I also have a microphone and webcam that I'd like to able to switch which computer they're connected to and follow the keyboard/mouse. I'm fine with them appearing and disappearing for each computer as they switch. I have no idea how possible this, but would be really neat to just kind of act for some devices like they're connected to a USB hub and sometimes that hub is connected to one computer and others times, another.

I would like to support this project

Dear Hrvoje,

Firstly, I must commend you on the exceptional work you've done with your project. It's impressive as heck!

I've built two deskhoppers, and they're performing wonderfully. As someone who greatly appreciates the effort you have put in, I feel inclined to offer my support.

Would your project benefit from additional hardware for testing, like a specific type of Logitech mouse or a unique keyboard? I'm also open to providing financial support or purchasing necessary test equipment for you. I believe in supporting valuable open-source projects, and yours has certainly been beneficial in practical terms.

Looking forward to potentially collaborating with you.

Best wishes,
-Chris
[email protected]

Key repeating until Esc is pressed

I got a specific setup that has an issue. I use an IBM model M SSK (PS/2) through a cheap active PS/2 to USB converter sold under the Bandbridge brand. I only use the keyboard port on the PS/2 to USB converter.

When I connect the PS/2 converter to the 'Keyboard' port on the Deskhop and my USB mouse to the 'Mouse' port on the Deskhop and A and B to my Laptop and Desktoop, I get a "stuck key" (repeating a previously pressed key until I press Escape) when I switch between laptop and desktop. When I switch again between laptop and desktop after hitting Escape, the repeating continues.

Initially I thought that I could work around this issue by plugging the mouse in the keyboard port and vice-versa, but after a while the same thing happened in that setup.

My guess is that the PS/2 to USB converter is to blame.

8bitDo Retro Mechanical Keyboard not working.

I plugged my keyboard it did not work.
As a reference, I paste the results of the following command.

usbhid-dump --model=2dc8:5201

001:005:002:DESCRIPTOR 1709695945.563311
05 01 09 06 A1 01 85 01 05 07 19 E0 29 E7 15 00
25 01 75 01 95 08 81 02 95 01 75 08 81 01 95 05
75 01 05 08 19 01 29 05 91 02 95 01 75 03 91 01
95 06 75 08 15 00 26 F1 00 05 07 19 00 2A F1 00
81 00 C0 05 0C 09 01 A1 01 85 02 75 10 95 01 15
01 26 8C 03 19 01 2A 8C 03 81 00 C0 05 01 09 80
A1 01 85 06 09 82 09 81 09 83 15 00 25 01 19 01
29 03 75 01 95 03 81 02 95 05 81 01 C0 05 01 09
06 A1 01 85 0C 05 07 19 E0 29 E7 15 00 25 01 75
01 95 08 81 02 15 00 25 01 19 00 29 77 75 01 95
78 81 02 C0 05 01 09 06 A1 01 85 0A 05 07 19 E0
29 E7 15 00 25 01 75 01 95 08 81 02 15 00 25 01
19 00 29 77 75 01 95 78 81 02 C0 05 0C 09 01 A1
01 85 11 15 00 25 01 75 01 95 03 81 01 75 01 95
01 05 0C 09 B8 81 02 06 FF 00 09 03 81 02 75 01
95 03 81 01 C0

001:005:001:DESCRIPTOR 1709695945.570816
05 8C 09 01 A1 01 85 B1 09 02 15 00 26 FF 00 75
08 95 20 81 02 85 B2 09 03 95 20 75 08 15 00 26
FF 00 91 02 85 54 15 00 26 FF 00 09 07 75 08 95
20 81 02 85 51 09 08 95 20 75 08 15 00 26 FF 00
91 02 85 52 09 09 95 20 75 08 15 00 26 FF 00 91
02 C0

001:005:000:DESCRIPTOR 1709695945.576274
05 01 09 02 A1 01 85 03 09 01 A1 00 05 09 19 01
29 05 15 00 25 01 75 01 95 05 81 02 75 03 95 01
81 01 05 01 09 30 09 31 16 01 80 26 FF 7F 75 10
95 02 81 06 09 38 15 81 25 7F 75 08 95 01 81 06
05 0C 0A 38 02 15 81 25 7F 75 08 95 01 81 06 C0
C0

Mouse doesn't work but keyboard does

I'm able to swap keyboards using caps lock and the keyboard seems to work on both computers. However, the mouse doesn't seem to work at all. When connecting the mouse, pico B's led flashes twice but A's doesn't. I imagine I didn't solder something right. Any ideas?

Custom image issues

I am able to cross-compile and build on my debian 12 (gcc 12.2) after installing the following:
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib

However, the keyboard on my custom images do not work. They work with the pre-built binaries. I changed the CAPS_LOCK to F12 in user_config.h.

Am I compiling with the right cross compiler? If there is are more instructions on compiling the code with either a linux or mac machine, it would help a lot.

Suggestion: Add holes to support clone Raspberry Pi Pico pinouts

Hello,

There are some Raspberry Pi Pico clones, which are cheaper and have usb-c connectors, such as these:

image

Pinouts match 1:1 on these clone pico boards.

However, since the current PCB design is for smd soldering only, it's too hard to solder these pico to the board.

If the soldering pads chould support both smd and through hole soldering, something like the center part of this PCB, it'd be way easier so solder these.

2024_01_19_0uk_Kleki

I'd appreciate if this is considered. Sorry I'm not a board designer, otherwise this would have been a pull request.

Thanks in advance!

Button to lock yourself to one computer

Hi! Although I have not been able to build this one yet I was thinking how well does it work when you play e.g. games? I always have to disable Barrier when playing or my mouse switches to other computer. A physical button to lock yourself to current computer would do or a key combination on keyboard. Physical button is hardware change but with a button or two there are other possible uses too.

Development/debug tips

Hello,

Thank you for sharing your project! I'm building a deskhop this week and I'm curious to see if it solves some of the pain I've been putting up with for years.

I'd love to support and have a handful of Logitech and other devices I can test with. Do you have any suggestions for development setup? Specifically any guidance around debugging would be greatly appreciated! So far I'm able to build and flash the devices but end up with flashing LEDs. I'm guessing this is due to some MacOS idiosyncrasy or the fact that it's all roughly cobbled together on a breadboard until Friday when the PCB arrives, but I am eager to debug. I have a FTDI device, and other pis I could use as serial debuggers... but somewhat uncharted territory at the moment.

Thanks again!

Slow mouse movement

Thank you for your open-source project. On the day you released it, I made a board according to the PCB you provided.

After downloading the latest firmware today, I found that the mouse moves very slowly on two screens. Can you tell me where I can adjust the mouse speed? Maybe this parameter can be exposed.

My computer configuration:
Mouse: Logitech wireless mouse.
Keyboard: 2.4G wireless keyboard.
Computer A: Desktop computer, Windows 10, screen resolution is 1920 x 1080.
Computer B: Laptop computer, Windows 10, screen resolution is 2560 x 1600.

Thank you again.

Different mouse speed on the two PCs

I just finished building a Deskhop, great Project!

My Problem is that the mouse speed is different on both PCs.
The left PC is a Linux Machine in the speed is ok. The right PC is a Windows Machine and the mouse cursor speed is there very slow.
Curiously changing the cursor speed in Windows changes nothing.
I saw that you can configure the speed factor in user_config.h, could this be made per screen?

3-4 desktop for 1mouse 1 Keyboard ?

Dear Hrvach, first of all i wanna tell you how i am happy when i found your project, it reply to a need that i had since many years.

I have 4 computers and i wanna try to connect all of them with the same mouse and keyboard ( the first computer has 2 screens, the second 1 the third one and the last one screen also).

Do you think that you will be able to extend your project on this need?

I will be very happy to buy all what you ill tell me to buy and test it, 2 3 4 5 computer, i can make all the tests you need and i will be very quick to reply.

Thank you for your reply, hope you will be enthusiast on testing it with me ^^

On the waiting of the pleasure of reading you.

Got some spare PCB's

I ordered some PCB's (and a case) from JLCPCB but don't need 5 Deskhops's. So if you're in The Netherlands and want a PCB, get in touch!

Dual screen on macOS doesn't work

Hi,

I have two laptops and one external monitor. If I connect the monitor to the Linux-laptop, everything works as expected. I can move to all three screens: Linux-Laptop (DeskHop B) -> external monitor -> Mac (DeskHop A).

Unfortunately, if I connect the monitor to the macOS-laptop (using the same USB-C cable as with the other laptop), I can only control one screen on the Mac. It just doesn't allow me to use the second screen. Altough I can use the built-in trackpad to move between both screens. Either it's stuck to the primary screen, or if I use the trackpad to move the mouse to the secondary screen, it just allows this one. So it's: Mac (DeskHop B) or external monitor -> Linux (DeskHop A) but not Mac (DeskHop B) -> external monitor -> Linux (DeskHop A).

The Mac is running Sonoma 14.3.1. What information can I provide to narrow this problem?

Support for gaming?

Will this ever work with games? I know this is not the main demographic for this. I wanted to use deskhop with my main PC and a second PC that I use for media/study. I've been using Synergy but found deskhop and would love to use it over software. However after putting one together and attempting to play any games I found you can't move your mouse more then a few degrees, making playing anything with Keyboard and mouse not really practical.

Feature request: Mouse accelleration

Deskhop is working great, however the fact that there is no accelleration built in is a bit of a bummer. (due to it being an absolute pointing device, i can't set it in the OS itself.

Maybe some simple lookup table or array in the code could be used to determine the mouse movement.
Calculate the (vector) speed and then look up the appropriate multiplication factor..
10 -> 1
20 -> 1.5
30 -> 2

That way everyone could set up their own speed curve.

(Accelleration helps a lot when just flicking the cursor into another screen section but still being able to fine control the movement.)

Error when building source

I get the following error when building from source:

In file included from /home/dev/src/usb_descriptors.c:26:
/home/dev/src/main.h:88:20: error: expected identifier or '(' before ':' token
   88 | enum packet_type_e : uint8_t {
      |                    ^
make[2]: *** [CMakeFiles/board_A.dir/build.make:76: CMakeFiles/board_A.dir/src/usb_descriptors.c.obj] Error 1
make[1]: *** [CMakeFiles/Makefile2:1596: CMakeFiles/board_A.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

I have not made any changes to the source. My guess is a dependency isn't configured correctly.
For what its worth I'm working inside this docker container: https://github.com/lukstep/raspberry-pi-pico-docker-sdk

Slow mouse: Logitech G502

On MacOS 14.2.1, Logitech G502. Very slow mouse.

Used https://github.com/todbot/mac-hid-dump to fetch the descriptors.

# note the Logitech reports 2 descriptors

046D C332: Logitech - Gaming Mouse G502
DESCRIPTOR:
  05  01  09  06  a1  01  85  01  05  07  19  e0  29  e7  15  00
  25  01  75  01  95  08  81  02  81  03  95  06  75  08  15  00
  26  a4  00  19  00  2a  a4  00  81  00  c0  05  0c  09  01  a1
  01  85  03  75  10  95  02  15  01  26  8c  02  19  01  2a  8c
  02  81  00  c0  05  01  09  80  a1  01  85  04  75  02  95  01
  15  01  25  03  09  82  09  81  09  83  81  60  75  06  81  03
  c0  06  00  ff  09  01  a1  01  85  10  75  08  95  06  15  00
  26  ff  00  09  01  81  00  09  01  91  00  c0  06  00  ff  09
  02  a1  01  85  11  75  08  95  13  15  00  26  ff  00  09  02
  81  00  09  02  91  00  c0
  (151 bytes)
046D C332: Logitech - Gaming Mouse G502
DESCRIPTOR:
  05  01  09  02  a1  01  09  01  a1  00  05  09  19  01  29  10
  15  00  25  01  95  10  75  01  81  02  05  01  16  01  80  26
  ff  7f  75  10  95  02  09  30  09  31  81  06  15  81  25  7f
  75  08  95  01  09  38  81  06  05  0c  0a  38  02  95  01  81
  06  c0  c0
  (67 bytes)

Not working when compiled by source

I'm not sure what I am doing wrong, the provided binaries from the beta release work, but I ran into issue #15 and thought I'd increase the mouse acceleration in user_config.h.

I built it on my arch linux machine using the following commands:

PICO_BOARD=pico PICO_SDK_PATH=/usr/share/pico-sdk cmake -S . -B build
cmake --build build

I have pico-sdk 1.5.1 installed via aur.

When I flash my pico A, the led keeps blinking in an interval.

Flashing back the provided binaries, functionality returns ๐Ÿ˜…

Multiple monitors on each PC

Hi,

Excellent idea and implementation.
As of now, does it support multiple monitors with different resolutions connected on each PC ?

Thanks

media keys not working

I'm using a Cherry Strait 3.0 keyboard. It seems that the media keys for <play/pause>, <volume down>, <mute>, <volume up> are represented by there own input device.

dmesg when connecting:

[406511.327571] usb 1-7: new low-speed USB device number 73 using xhci_hcd
[406511.493065] usb 1-7: New USB device found, idVendor=046a, idProduct=0180, bcdDevice= 1.03
[406511.493082] usb 1-7: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[406511.493090] usb 1-7: Product: wired keyboard
[406511.493096] usb 1-7: Manufacturer:  
[406511.505538] input:   wired keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:046A:0180.0030/input/input134
[406511.564462] hid-generic 0003:046A:0180.0030: input,hidraw3: USB HID v1.11 Keyboard [  wired keyboard] on usb-0000:00:14.0-7/input0
[406511.572461] input:   wired keyboard Consumer Control as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.1/0003:046A:0180.0031/input/input135
[406511.631995] input:   wired keyboard System Control as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.1/0003:046A:0180.0031/input/input136
[406511.632572] hid-generic 0003:046A:0180.0031: input,hidraw5: USB HID v1.11 Device [  wired keyboard] on usb-0000:00:14.0-7/input1

When trying evtest I get a selection of three devices for the keyboard:

/dev/input/event11:	  wired keyboard
/dev/input/event12:	  wired keyboard Consumer Control
/dev/input/event13:	  wired keyboard System Control

The normal keyboard on event11 is what works using deskhop. Events for media keys can be found on event12:

Input device ID: bus 0x3 vendor 0x46a product 0x180 version 0x111
Input device name: "  wired keyboard Consumer Control"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
[...]
Event: time 1709889093.911391, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00cd
Event: time 1709889093.911391, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1709889093.911391, -------------- SYN_REPORT ------------
Event: time 1709889094.023375, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00cd
Event: time 1709889094.023375, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1709889094.023375, -------------- SYN_REPORT ------------
Event: time 1709889095.679357, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00ea
Event: time 1709889095.679357, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 1
Event: time 1709889095.679357, -------------- SYN_REPORT ------------
Event: time 1709889095.783314, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00ea
Event: time 1709889095.783314, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 0
Event: time 1709889095.783314, -------------- SYN_REPORT ------------
Event: time 1709889096.431247, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2
Event: time 1709889096.431247, type 1 (EV_KEY), code 113 (KEY_MUTE), value 1
Event: time 1709889096.431247, -------------- SYN_REPORT ------------
Event: time 1709889096.559251, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2
Event: time 1709889096.559251, type 1 (EV_KEY), code 113 (KEY_MUTE), value 0
Event: time 1709889096.559251, -------------- SYN_REPORT ------------
Event: time 1709889097.039276, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9
Event: time 1709889097.039276, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1
Event: time 1709889097.039276, -------------- SYN_REPORT ------------
Event: time 1709889097.103318, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9
Event: time 1709889097.103318, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0
Event: time 1709889097.103318, -------------- SYN_REPORT ------------

These are not relayed when the keyboard is connected through deskhop.

I didn't find out what the third event13 device is used for - maybe it's just there even though no keys are connected.

deskhop - active usb hub not working

First off all. Thanks for your great work! I followed your project for the last month. Because of your great documentary i got my deskhop board assembled and it is a pleasure to watch the software evolve.

My setup is a cherry G80-3000N RGB keyboard (0.79W) and a Corsair M65 RGB Ultra Gaming mouse (~0.54W). If i connect these periperals to my deskhop board it seems not one of these work out of the box. So i got the idea in my mind that the problem is the power consumption of these devices, i ordered a active powered USB-Hub (CSL - USB 3.0 Hub Aktiv - 10 GBit/s from Primewire) and connect my mouse and keyboard via these powered HUB but none of my periperals even light up nor do anything.

If i try it with a standard keyboard and mouse direct connected to Board A and B it works like charme. If i try to connect these working keyboard and mouse via the HUB it stops working. If i connect the HUB directly to the PC everything works. Is there a way to debug or solve these behavior for me? Do you have any suggestions, what i can do to make it work?

I have seen that it is possible to switch beetween desktops using a configurable key, are there any plans to make it possible to switch via lets say middle mouse double click? I would love to only switch beetween outputs on keypress or double middle mouse click, because of fullscreen applications and games.

Feature request: 'jiggle' pointing device on non-active computer

Many of us are forced to use inactivity timers which lock sessions on our computers (security!). There are various tools out there which claim to be able to effectively stop this behavior by 'jiggling' the pointer so it appears to be active, but those must be installed on the controlled computer so that can be a challenge itself.

Deskhop is perfectly positioned to solve this problem for us, since it is outside the controlled computer but in the path between the actual pointing device and that computer.

CAD and STEP files

Very cool project!

Please supply the native CAD files and STEP files for the case for people like me who want to modify the case design.

Feature Request: Desk-hop between different HDMI displays

I love this project. I have two computers, a big desktop computer, and a small work laptop.

When Im in work mode I would love to have all displays to extend my work laptop, but after work, I would love to switch back to my PC without having to unplug and replug HDMI cables. Do you foresee any issues with making this work? Maybe for something like this it can't be digitally defined, but would be physical relay switches

Schematic improvement: Tie VBUS and VSYS together on each Pico

According to the section 4.5 of the Pico datasheet, when only a single power supply is used for the Pico VBUS and VSYS can be tied together. This eliminates a small voltage drop across a diode in the power circuit, improving efficiency and eliminating some voltage ripple on VSYS.

pico w

I have a pico w instead of a pico, what do I need to do to make that work instead?

Question regarding UART

Hey @hrvach,

thank you very much for the effort of creating this piece of hardware. I think you created a solution many of us were looking for ๐Ÿฅณ

I have a short question regarding the UART Pins. Could you explain why Pico A is using GPIO 12,13 and Pico B is using GPIO 16,17? Wouldn't it be possible to use the same Pins in both Picos?

Additional FAQs

These are some questions I had, that probably would be good to add to the FAQs. I don't actually have the answers :)

  1. When the active screen is changed via the mouse, does the keyboard follow (and vice versa)?
  2. Will this work with keyboard/mouse combo dongles, like the Logitech Unifying receiver?
  3. Will this work with wireless mice and keyboards that have separate wireless receivers (one for the mouse, another for the keyboard)?

extending deskhop by an open hardware usb-c hub

I'm waiting for my PCBs and parts and hopefully will soon be able to test the deskhop. What a nice project, thanks a lot!

My use case seems to be a bit different from what I read here:

mobile device desktop stand

I'm using a Librem5 mobile and a tablet running Lineage. Both offer convergence: I can use a usb-c hub and connect mouse, keyboard and even another display if the hub offers the right hdmi/displayport pass out.

This is all nice, but it doesn't cover my major use case:

Working on my desktop and wanting to just answer some chat message or look up some contact on my mobile that sits beside it.

I already tried waypipe, but this has a lot of downsides and pitfalls and needs network connectivity between the two devices.

But now I found deskhop that gives me the hope to be able to put together a setup like this:

  • deskhop to share my keyboard and mouse between desktop and mobile
  • an extension to the case to have a stand for mobile devices on top of the deskhop case
  • a usb-c hub included into the extended deskhop case
    • usb-c pd power in to optionally charge the mobile device, power one deskhop rpi, power connected usb devices
    • a usb hub port to connect to the deskhop for mouse/keyboard
    • optional:
      • another usb hub port to connect anything like a memory stick
      • usb-c port to connect devices like a Nitrokey usb-c, a yubikey, a modern memory stick

I could put a usb-c hub like this inside the case, but for its use case I wouldn't need ethernet nor hdmi and it is missing the optional usb-c port to connect my Nitrokey.

I started looking around for an open hardware design of a usb-c hub that could integrate with the deskhop into the device I'd like to put together, but didn't find any.

The projects I found are:

I'd be thankful for any suggestions, opinions and help.

Dry Studio Black Diamond 75 keyboard not working

I thought I'd try with a few other keyboard I have. Unfortunately the Dry Studio Black Diamond 75 keyboard does not register with the deskhop at all.
I'm guessing it's got issues with the power draw but I'm not sure. I don't currently have a way to measure that but I've ordered a little inline USB power monitor/tester.
I turned off the LEDs etc but still no luck.
If there's any advice on debugging please let me know and I'll give it a shot.

More than two machines?

Could this potentially be expanded to work on a third and forth machine? Or could you daisy chain multiple deskhops together?

Corsair RGB Strafe Keyboard and Corsair Scimitar Elite mouse not working

Hello,

I successfuly built the board today

I plugged my keyboard and mouse it did not work.

Keyboard LED was blinking (no computer detected)
Mouse was only moving to the right of the screen only when I was clicking on left or right button

I tried the test_fw mentionned in wiki but mouse did not work at all with this one, no move at all.

I plugged another mouse, Logitech G500s and a spare Mac keyboard, and they both instantly worked fine.

So I guess FW if well flashed and solders are OK

Please find my lsusb result from my corsair keyboard/mouse :

Bus 009 Device 036: ID 1b1c:1b8b Corsair CORSAIR SCIMITAR RGB ELITE Gaming Mouse
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x1b1c Corsair
  idProduct          0x1b8b 
  bcdDevice            3.21
  iManufacturer           1 Corsair
  iProduct                2 CORSAIR SCIMITAR RGB ELITE Gaming Mouse
  iSerial                 3 1203701FAF5D1C045DD7433BF5001C05
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0042
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              300mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     172
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      29
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
Device Status:     0x0000
  (Bus Powered)

Bus 009 Device 037: ID 1b1c:1b20 Corsair STRAFE RGB Gaming Keyboard
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x1b1c Corsair
  idProduct          0x1b20 STRAFE RGB Gaming Keyboard
  bcdDevice            3.08
  iManufacturer           1 Corsair
  iProduct                2 Corsair STRAFE RGB Gaming Keyboard
  iSerial                 3 13008030AEAA1004550316D6F5001940
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0042
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     132
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      29
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
Device Status:     0x0000
  (Bus Powered)

Edit : and my screens are reversed, my left screen is detected right side, did not find how to swap them yet :D

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.