dawnmist: My homebuilt gaming keyboard - version 1 (Default)

This is a quick post to record the changes I needed to make to the Bluetooth driver for an Edimax EW-7611ULB wifi & bluetooth usb dongle to get the bluetooth working on the (currently) new Raspberry Pi 4.9.11 kernel. Hopefully it can help anyone else using this adapter when they upgrade their Raspberry Pi.

The original instructions and source for installing the drivers for this adapter are published by Edimax themselves at: https://edimax.freshdesk.com/support/solutions/articles/14000047172-how-to-install-ew-7611ulb-adapter-on-raspberry-pi - but they currently cover installing the drivers for a Raspberry Pi running kernel 4.4. The wifi driver installation documented by Edimax works fine. There is one minor modification to the bluetooth driver source code required so that it will compile properly due to kernel api changes in kernel version 4.9 for the HCI driver interface.

In Section "(II.) Bluetooth Driver Installation", before running "sudo make install -s", you need to edit the file bluetooth_usb_driver/rtk_coex.c. At line 448, change

#if HCI_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
#if HCI_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
	bt_cb(skb)->req.start = true;
#else
	bt_cb(skb)->hci.req_start = true;
#endif
#endif
to:
#if HCI_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
#if HCI_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
	bt_cb(skb)->req.start = true;
#elif HCI_VERSION_CODE >= KERNEL_VERSION(4,9,0)
	bt_cb(skb)->hci.req_flags |= HCI_REQ_START;
#else
	bt_cb(skb)->hci.req_start = true;
#endif
#endif
Save the change, and then continue with the instructions by running the "sudo make install -s" command.

Otherwise, follow the instructions on the Edimax link to get both wifi and bluetooth working properly with this adapter on the Raspberry Pi.

dawnmist: My homebuilt gaming keyboard - version 1 (Default)

I've not added any buttons yet though. So I can move the mouse cursor around my screen at a reasonable rate using just a fingernail, but I cannot click on anything without my real mouse.

Using the touch screens I already had made it easy - I knew what library to use to read touch co-ordinates from it. The entire sketch so far is only 33 lines long...including comments and blank lines! All the real magic is happening in the UTouch and Teensy libraries...all I have to do is get the read (x,y) values back from the UTouch library, compare them to the previous set of values, then send the difference to the PC using Teensy's Mouse.move(x,y) function. :)

Project thoughts

Wednesday, August 12th, 2015 09:07 pm
dawnmist: My homebuilt gaming keyboard - version 1 (Default)

I think I've worked out what my next build-it-yourself project will be...a replacement to a mouse that can be used with fingernails instead of having to hold it. I have an auto-immune condition (Sjogren's Syndrome) that is causing the skin of my hands and feet/legs to burn/sting fairly badly (the Sjogren's is causing Small Fibre Neuropathy). My hands were hurting enough by the end of the day today at work that I couldn't really hold my mouse anymore. Pressure on the skin - particularly against ridged objects like the scroll wheel - aggravates the Neuropathy issues...and between the palm holding the mouse to move it and the scroll wheel and buttons on the mouse poking my fingers it becomes very hard to use the mouse when my skin is feeling like I've skidded on my hands across asphalt. My hands are not like that all the time...yet...but I can see a future when they will be, so I've decided to design/build an alternative device for me to use instead. I've found that typing on my fingernails doesn't trigger/aggravate the pain in the skin of my hands, so I'll design a replacement device for a mouse around being able to use my nails as the primary input device instead.

A thumb-ball trackball wouldn't really work either - you still use the fleshy pads of your fingers/thumb to move the ball, press buttons, etc, and to move the scroll wheel if it has one. It likely wouldn't aggravate my palms as much, but that's about all I could say would be positive about it. A palm-ball variant would be even worse.

So I'm thinking I'll build a box with 5 keys in a cross-shape. Left/middle/right click across the horizontal, with scroll-up above the cross and scroll-down below it. Behind those on a 90-120 degree angle I'll mount a resistive touch sensor - resistive so that it reacts to fingernails - to use to replace the "ball"/movement part of a mouse. About the only thing it wouldn't do easily would be click-and-drag...but that would be more a case of learning alternative finger use/positions than anything else. Or I could use another key as a "toggle left-click"...i.e. it stays "clicked" until pressed a second time. I'll have to think a bit about that...it's an easy solution to the issue.

I know where I can get the keys and keycaps easily, and the controller to use to turn those into a device that any PC will recognise as a USB mouse. I think I could probably use an instrument case (the kind with the angled end for a LCD to be mounted in it) as the box. I just need to find the resistive touch sensor to put on the angled back (there's a lot of cheap ones pre-mounted on TFT screens, but I don't need a screen for a mouse).

dawnmist: My homebuilt gaming keyboard - version 1 (Default)

Woohoo! The keyboard is now assembled in the box, and most of the back panel connectors/switches are in place (it's just the foot switch connections that are currently missing). This means I now have a portable, customised-for-me gaming keypad *cheers*.

Pics and discussion behind the cut )
dawnmist: My homebuilt gaming keyboard - version 1 (Default)

My circuit board arrived today, and on initial inspection looks good. I got lucky and received 3 copies of the board. There are one or two minor blemishes in the flood-fill ground copper, but all of them are in large areas and not in places where there were tracks or anything critical, so those won't matter.

Fits nicely in the box, the keys mount properly (not so tight that you have to force them, but firm enough that it takes a bit of pressure and the posts will lock them in place and prevent rotation), the Teensy fits (plugged in from underneath), and the connectors fit well.

Next thing is to actually get the components soldered onto the board - and find out whether I screwed up the circuit...We did try really hard to check it before sending it off to be made though, so I'm hoping it all just works. :-)

dawnmist: My homebuilt gaming keyboard - version 1 (DIY)

So, it's been several months since I first said I was having fun doing the circuit board layout...and after a few iterations/revisions I finally got an order for two copies of the board submitted today.

Read more... )

Having had several more months of playing around with circuit layout now, I'll confirm my initial impressions - it's a fantastic puzzle to solve, which makes it something I found really fun to do!

dawnmist: My homebuilt gaming keyboard - version 1 (Default)

I spent most of the weekend (when I wasn't blinded by a migraine) laying out a (potential) circuit board for my home-made keyboard. At the moment, it's still wired up via breadboard taking up a ton of space on my desk - I'd like to finally get it inside the keyboard box. :-)

First attempt was a daughter board for the shift-register part to connect to the existing keys...but wasn't going to fit the teensy & 40-pin screen connector in the space at the end as well, which would still leave some of the keyboard parts sitting outside the box.

Second attempt was a complete replacement of the existing key mount for the 24-key section of the keyboard, integrating them onto a single circuit board so that the teensy & screen could go on the other side of the keys, and the keys could be directly wired to their shift registers instead of needing connectors for them - that looks a *lot* better in terms of wiring, and has all laid out nicely so far. I've still got a few adjustments to make - the joystick needs wiring in, and there's a couple of resistors we need to add as short-circuit protections for the footswitch & spare button connectors, but it's looking like it'll work nicely.

I discovered that circuit board layout is a really interesting and fun puzzle to do...and one that will actually be useful at the end, which traditional jigsaws generally are not! *lol*

Keyboard updates

Wednesday, September 18th, 2013 11:15 am
dawnmist: My homebuilt gaming keyboard - version 1 (Default)

I've been spending a lot of time simply using the keyboard over the last few months - enough that the 8-way thumbswitch became quite unreliable (forward was intermittent, and it kept "hesitating" in the middle of jumps causing me to miss the next platform and die in jumping puzzles).

I decided to switch to using an analogue joystick instead (much easier to replace when it gets worn out - there's a lot more of them around), and resolve the X/Y measurements into the 8-way digital locations. After a week or so of use, I'm finding it more accurate than the old digital switch was (though I had to glue the joystick cap on first, otherwise I kept flipping it off the joystick in dungeons/tougher fights).

This pulled the directional keys out of the shift-register key matrix, effectively freeing up 8 button locations. One of those locations has now been reused as a second foot switch (because I had two), leaving me with 7 pins for future expansion. I haven't really established what keypress I'll set the second footswitch to send yet - the first one is used for push-to-talk in mumble (our guild's voice chat).

I've also done some work optimizing the data writes to the LCD using sets of consecutive pins on the C&D or B&D ports, and reordered the wiring to my teensy 3 to match the B&D option. The patches to enable that are available in the Teensy Forum thread where the UTFT library was being discussed here: http://forum.pjrc.com/threads/18002-Teensy-3-0-driving-an-SSD1289-with-utft?p=34719#post34719. I set it up so that there were options to use ports C&D (fastest as it's only 2 write cycles to set all pins in the 16-bit data bus, but interferes with SPI), B&D (uses 3 write cycles, compatible with SPI), and the old "set the pins you want to use" which uses 16 write cycles.

dawnmist: My homebuilt gaming keyboard - version 1 (Default)

I've been doing a lot of work again the last month on my upgrade from using a Teensy 2++ with monochrome screen to a Teensy 3 with Colour TFT + SD Card + Touch, and it's now coming together nicely.

Read more... )

So there's still lots to keep me busy, but in the mean time - the basics are now all there and working together well enough to ditch the Teensy 2++ controller for the keyboard and move across to using the Teensy 3 controller full-time!

dawnmist: My homebuilt gaming keyboard - version 1 (Default)

I made a lot of progress on the Teensy 3.0 upgrade/rewrite of my right-handed programmable game keypad over the weekend. It's still not ready to replace the Teensy 2++ control board yet - and has a *long* way to go - but the new hardware is mainly connected and functioning.

Read more... )
dawnmist: My homebuilt gaming keyboard - version 1 (Default)

I received my Teensy 3.0 controllers in the mail last week, so I could finally start on version 2 of my programmable right-hand gaming keypad (designed to sit under my right hand because my mouse is on the left - my right shoulder doesn't tolerate mouse movements). I got the real time clock working, then the sd card...but for the life of me I simply couldn't get the Tft screen to work.

Read more... )

All that frustration/hair tearing out was due to an incorrect specification of the controller on the tft. Just in case someone else comes across it, if you bought a 3.2" tft from ebay claiming to use the HX8347-A controller and it just won't work, try treating it as the SSD1289 controller instead - it seems that some ebay sellers have been listing their tfts as having the wrong controller chip!

Page generated Monday, July 7th, 2025 10:30 am
Powered by Dreamwidth Studios