Controller Buttons Not Working On Tecno Pocket Go
This is a new handheld and there is pretty much no support for it yet. It's a PC and controller in one unit, and you have to get video out through the type C port.
I have bazzite-deck installed, and most things are working fine, but none of the controller buttons work at all. I tried using input-remapper but the controller appears as a mouse and the app doesn't respond when I press any of the buttons. I'd love some help to get this working since it's the YouTube video I'm currently working on
lsusb -v output attached. I believe the controller is
Bus 003 Device 002: ID 2993:2001 TECNO Controller
121 Replies
Well we will have to fix that
You'll have to do some sleuthing on windows
Sure thing I can do whatever you need
Essentially we need a Wireshark USB recording of you opening the vendor app that switches it to gamepad mode
So we can isolate that command
Then run some Linux commands to figure out what those 2 extra vendor buttons do
And that's it
Sweet I'll try and get that
There is an additional button on the bottom as well and a three-way switch but I still need to figure out what those actually do
What does it do in windows? We have some Linux commands for you to play with
hhd.contrib evdev
will let you see the buttons each device emits. But they have to be buttons
Then hhd.contrib hidraw
will show the hid events they emit
Might have to add sudo
Since the device acts like a keyboard they will be keyboard events for now for most buttonsI see why it shows up as a mouse now lol
Pressing it doesn't do anything to switch it in linux unfortunately
Let me try these
bazzite@bazzite:~$ hhd.contrib evdev
Available Devices with the Current Permissions
- device /dev/input/event1, name "AT Translated Set 2 keyboard", phys "isa0060/serio0/input0", uniq ""
- device /dev/input/event5, name "Logitech G502 HERO Gaming Mouse", phys "usb-0000:c5:00.4-1.3/input0", uniq "0274384D3038"
- device /dev/input/event6, name "Logitech G502 HERO Gaming Mouse Keyboard", phys "usb-0000:c5:00.4-1.3/input1", uniq "0274384D3038"
- device /dev/input/event14, name "Cherry GmbH Cherry TouchBoard", phys "usb-0000:c5:00.4-1.1/input0", uniq ""
- device /dev/input/event15, name "Cherry GmbH Cherry TouchBoard", phys "usb-0000:c5:00.4-1.1/input1", uniq ""
Enter device path (/dev/input/event# or #):
I dont think any of these are the controller
I'll try the top one thoughAt keyboard has the vendor buttons on the ayaneo for example
And the volume buttons in general
I would suggest using ssh
But if it didn't do anything, where's the keyboard now?
I am, it's wacky I have the device headless over wifi this is so bizarre lol
We need a rule/kernel patch for the controller to work after we figure out how to get it out of keyboard mode
But that's simple I'll pull that up right now
Ok I unplugged everything from it and now it's just
device /dev/input/event1, name "AT Translated Set 2 keyboard", phys "isa0060/serio0/input0", uniq ""
Just make sure the keyboard button makes it a keyboard
Do the keyboard events come from here? That'd be a first
No change when hitting the button
Does it act like a keyboard though at all?
Nope
The only event that happens is when I hit the center button
┌─────────────────────────────────────────────────────────────────┐
│ 0.000s / EV_MSC (04) / MSC_SCAN (x004): 0x00DB │
│ 0.000s / EV_KEY (01) / KEY_LEFTMETA (x07d): pressed │
└ SYN ─ 21.855s ─ NaN Hz ─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 0.002s / EV_MSC (04) / MSC_SCAN (x004): 0x0038 │
│ 0.002s / EV_KEY (01) / KEY_LEFTALT (x038): pressed │
└ SYN ─ 21.859s ─ 237.9 Hz ─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 0.004s / EV_MSC (04) / MSC_SCAN (x004): 0x002A │
│ 0.004s / EV_KEY (01) / KEY_LEFTSHIFT (x02a): pressed │
└ SYN ─ 21.863s ─ 247.3 Hz ─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 0.007s / EV_MSC (04) / MSC_SCAN (x004): 0x003B │
│ 0.007s / EV_KEY (01) / KEY_F1 (x03b): pressed │
└ SYN ─ 21.867s ─ 237.2 Hz ─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 0.014s / EV_MSC (04) / MSC_SCAN (x004): 0x00DB │
│ 0.014s / EV_KEY (01) / KEY_LEFTMETA (x07d): released │
└ SYN ─ 21.872s ─ 197.4 Hz ─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 0.019s / EV_MSC (04) / MSC_SCAN (x004): 0x0038 │
│ 0.019s / EV_KEY (01) / KEY_LEFTALT (x038): released │
└ SYN ─ 21.877s ─ 221.4 Hz ─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 0.025s / EV_MSC (04) / MSC_SCAN (x004): 0x002A │
│ 0.025s / EV_KEY (01) / KEY_LEFTSHIFT (x02a): released │
└ SYN ─ 21.881s ─ 263.4 Hz ─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 0.029s / EV_MSC (04) / MSC_SCAN (x004): 0x003B │
│ 0.029s / EV_KEY (01) / KEY_F1 (x03b): released │
└ SYN ─ 21.885s ─ 237.5 Hz ─────────────────────────────────────┘
That's in the at keyboard
Oh yea that's easy to map
No event from the controller mode button?
journalctl -b | fpaste
get this oneNope no events from anything at all other than the center button
https://paste.centos.org/view/96d03628
New USB device found, idVendor=2993, idProduct=2001, bcdDevice= 1.10
Product: TECNO Controller
Here's the controller
Needs an xpad rule
sudo modprobe xpad && echo 2993 2001 | sudo tee /sys/bus/usb/drivers/xpad/new_id
I'm looking for the vendor device
Can't find it
Found it
Classic usb keyboard
Use sudo for the hidraw command
I just boarded a plane so any questions you have now it's the timeOof ok I ran hidraw but I'm getting a ton of output too fast to read
like this
Looks like gyro too
250hz
Nice
Oh yeah it changes when I move it around and press buttons
Good to try it in steam then?
Uh which device is that
/dev/hidraw1 2993:2001 Usage Page: 0xffa0 Usage: 0x0001 Names: ' ': 'TECNO Controller'
there was also a hidraw0 but it didn't seem to do anything
Wow it seems to be working in steam now
There's still more to do to get the other buttons working but this helps a ton for now at least thank you so muchWhat fixed what we didn't do anything yet lol
The xpad rule you mean?
You need that every reboot otherwise you need to make a file
LMAO all I know is that I ran
sudo modprobe xpad && echo 2993 2001 | sudo tee /sys/bus/usb/drivers/xpad/new_id
and now the gamepad portion works in steam
True/etc/udev/rules.d/90-techno.rules
In this file
Put this lineGitHub
hhd/usr/lib/udev/rules.d/83-hhd.rules at 09c54001d5cba7e44e42ccd3d2...
Handheld Daemon, a tool for configuring handheld devices. - hhd-dev/hhd
Replace with the values above
You'll need to make the file
Directory will exist unless I fumbled it
So write the contents of the file that that github link goes to into 90-techno.rules?
But replace the vid and pid of the msi claw line?
Did that and rebooted and the gamepad still works so I assume that's what you wanted
You only need the line I pointed to
Yea
Well the other ones you already have so they do nothing
Would be good to find the bottom two out of the four buttons
Where they are
The center you got already
With that I'll be able to whip up some stuff and get them to work
Sweet and that's what you needed wireshark in windows for right?
Actually if the controller works skip it
Just figure out where they are with the commands I told you
No display gyro. So it's only the USB one
That 2 I highlighted is 0 when none are pressed, 1 when bottom left is pressed, 2 when bottom right is pressed, 3 when both are pressed
additionally it's 4 when top left is pressed, 8 when top right is pressed, and c when both are pressed
I'm also realizing that there are a lot of possible button combos for that lol
Also the "1" three characters to the right correlates to the bottom "mouse/gamepad" button. 1 when unpressed and 3 when pressed
Have you heard of bit masks
I'll give it a wirl tomorrow or wed
The buttons that have 4 and 8 ie the top buttons are start and select right
I believe so
We're a bit over my head lol
@antheas A refresher for whenever you have a chance to help me out with this again:
Gamepad buttons/dpad/joysticks/rumble all work after this fix: https://discord.com/channels/1072614816579063828/1303077946600456294/1303089351781126174
Big middle button is an AT Keyboard device that does this when pressed: https://discord.com/channels/1072614816579063828/1303077946600456294/1303082533755424790
I was able to remap the big middle button with input-remapper-gtk, but the remapping only goes into effect after entering desktop mode. After that I can return to gaming mode and it works there as well, until I power off the device.
The gyro, bottom left and bottom right middle buttons, rear "mouse/gamepad mode" button, and rear 3-way switch all trigger events in hidraw. However, none of them are present in Steam and don't do anything when pressed.
Sleep mode does not work, it fully powers off the system
Thanks again for the help, I'd be completely helpless on my own
Yeah I know how to fix all of those, I will try to spend a couple min on it tomorrow
I'm just travelling
journalctl -b | fpaste
Because the old one expiredI appreciate it!
I'll get this in a few mins
https://paste.centos.org/view/e3816178
cat /sys/devices/virtual/dmi/id/product_name
TECNO AG01
>
?Pocket Go
Sorry discord didn't notify meone sec
curl https://raw.githubusercontent.com/hhd-dev/hhd/refs/heads/master/hhd_cmd.sh | bash
run this and see if there are any errors and which buttons workDidn't seem to enable any additional buttons
One sec derp
ok, try now
No difference
Would the buttons just show up in Steam if it worked? Like on this page
again?
im just finding mistakes
at least the center button should work now
and the buttons below start/select hopefully
but theres probably at least 2 off by one errors there
Nice let me reboot and see what we got
you need to run that command though for it to work
ill give you another ocmmand after that
to make it stay without a terminal
found an off by one error
How would I know? Pressing them in game mode doesn't do anything and there's no listings for them in the controller button config screen
they dont do anything one sec
the center button will do stuff
and you will get something in the log
youll know when they start working
try again
Ok center button gives me a
GENC INFO QAM Pressed 1. base.py:1322
OVRL INFO Executing overlay command: 'open_qam' __init__.py:330
Bottom right button is GENC INFO Keyboard button opens QAM.
Nothing for bottom left or rear button or rear switchdidnt do rear
bottom left should open a menu
no logs
Nothing in terminal when I press it
wait
off by one lol
exactly you wont see anything in the terminal but it should be the xbox button
so it will open the left menu in steamui
and do the steam deck stuff
let me do the bottom left button...
ok the left buttom keyboard thingy button should open the keyboard now when you are in xbox mode
and be L4 in the other controllers
if theres no off by one error
ayyyy we got both of the middle buttons working now
ima be honest i have no clue what the slider should do
but other than that thats all of them, try the bottom button and see if it opens the keyboard
Yeah I wasn't sure either. Idk if it's possible use it as 3 separate buttons or something, but the active one would register as held all the time I imagine
So in the terminal it says it's opening the steam keyboard, but it doesn't actually open in the deck ui at least. Let me get into a game
yeah i think you need to be in a game or desktop
you can run it with
ujust _hhd-dev
now and it will make it run in the background
after it looks stuck its done
when you reboot it will clear
its going to be in bazzite in a week or so and after that you will not need to
sleep should also workYup works great! Thanks a ton.
Was about to ask about this lemee test it
sleeping with an external display connected is still not something that works 1000% but at least it should not shutdown now
Hmmm yeah it just kinda black screens and then comes back to life after a while
does it do the animation?
Yes
but before it did not right?
journalctl -b | fpaste
Ahhhhh I don't remember
if it shutdown it didnt
gimme the logs, so i can check if there is something shaddy, but thats all the controller related stuff other than gyro
Sorry I'm waiting for it to come back to life lol
oh that good, it kind of died this time
There we go, takes a while
hey if it sleeps it sleeps, thats a win in my book
Freezing user space processes failed after 20.008 seconds (1 tasks refusing to freeze, wq_busy=0)
could be something stupid
does not want to say what it is
sadc?No big deal sleep isn't really a deal breaker imo
sadc
you run that?-bash: sadc: command not found
What the lol
task:sadc state:D stack:0 pid:6768 tgid:6768 ppid:6767 flags:0x00004006
well this is blocking it from sleep
sudo pkill sadc
Ah no that's not me
At least I don't think so
never seen that before you probably dragged it in for some benchmark
selinux killed it and it broke sleep
actually not true thats fedora garbage that probably got dragged in by F41
@Kyle Gospo
sysstat-collect
is breaking sleep heresudo pkill sadc
didn't seem to make a differenceyea selinux did a funny. Its too late here
Ah
hopefully kyle can take over but its not a hardware issue
a program got killed by selinux and stayed there
ive never seen that in a log
Very nice well for now it's working pretty damn well minus gyro thanks again for the help with this
we can also do gyro but youll have to open the sourcecode and swap around the axis until it matches
you need at least like 20 tries to get it right so thats the only way for this device
for other devices i have a little gui but since this is built into the controller i cant use that
we will also have to figure out the scale
Oooooof well I certainly don't care that much about gyro
in any case, a bit o a pain. Probably not worth it
Yeah this is more than functional enough to continue filming with this thing
yup, gl. Hopefully over the next 2 days we will figure out why sadc broke selinux. You can also disable selinux i guess
set it to permissive
Btw how do I pronounce your username for the credit in the video
sudo rpm-ostree kargs --append=enforcing=0
this should fix sleep
thats my name. Its like andreas but instead of a dr it has a th
th as in thanksOk I think I got it :engihappi:
Lemee give that command a try
you will need to reboot after that command
then just
ujust _hhd-dev
and youre good until you reboot again
aight turning off the pc in 5 min, if you have any other questions drop them here
TDP should work too incl. the steam sliderYou're good I think I'm all set up now 👍
steam controller emulation instead of xbox might look better on video
youll also be able to chord the qam button which is nice
aight night
This device has really peaked my interest
It's really... something...
I put a massive screen on it and it's 10 times better, the included AR glasses are not great
Can't wait to see the final vid
"you might not like this but this is how the ideal bazzite handheld looks like"
I daily drive this it's worth it 1000%
i swear each time i see that i think of this for some bizzare reason
I think my interest in PC handhelds today was spawned entirely out of that abomination from back in the day
oh you are familiar with the linx8 vision :clueless:
i actually used it for gamestreaming, it worked fine as long as you clenched your ass and hoped for dear life that windows wouldnt run out of ram
wait I think I was thinking of something else
this one the razer edge pro
ah the predecesor
Lol what’s this?
My first foray into this handheld gaming was taking my Surface Pro 6 and modifying some controller meant for much smaller tablets to expand and hold the surface, and then streaming from my PC. That was 2018. I was too early.
Tempted to buy this and pair it with a different AR headset
The xreal air 2s are pretty good
@Bringus Studios just fired a release for Handheld Daemon that adds support for the Pocket Go, so by the 21st it will be supported in Bazzite stable and you can mention in your video
props to you
Hell yeah thanks a ton, now I can reset it and not dread having to set the fixes back up again lol