ubuntu/linux 北通无线游戏手柄不识别

news/2024/11/17 23:48:10/

1.现象

1.开发板无法识别北通无线游戏手柄

北通蝙蝠BD2A无线游戏手柄
在这里插入图片描述

lsusb

Bus 007 Device 003: ID 045e:028e Microsoft Corp. Xbox360 Controller

ls /dev/input

by-id by-path event0 event1 event2 event3 event4 event5 event6

没有识别到js0设备

2.ubuntu系统可以到input设备

ls /dev/input

by-id by-path event0 event1 event2 event3 event4 event5 event6 js0

2.解决方法:

开发板内核配置xbox手柄

CONFIG_INPUT_JOYDEV=y
CONFIG_INPUT_JOYSTICK=y
CONFIG_JOYSTICK_SIDEWINDER=y
CONFIG_JOYSTICK_XPAD=y
CONFIG_JOYSTICK_XPAD_FF=y
CONFIG_JOYSTICK_XPAD_LEDS=y

在这里插入图片描述

重新编译内核
更新kernel boot.img
插入北通无线游戏手柄,ls /dev/input 识别到js[x]设备
ls /dev/input

by-id by-path event0 event1 event2 event3 event4 event5 event6 js0

3.原理反推

方法1:

找到代码
ok3588-linux-source/kernel$ find -name Makefile|xargs grep JOYSTICK_XPAD

./drivers/input/joystick/Makefile:obj-$(CONFIG_JOYSTICK_XPAD) += xpad.o

xpad.c
usb pid:vid 045e:028e设备枚举

static const struct xpad_device {u16 idVendor;u16 idProduct;char *name;u8 mapping;u8 xtype;
} xpad_device[] = {{ 0x045e, 0x0289, "Microsoft X-Box pad v2 (US)", 0, XTYPE_XBOX },{ 0x045e, 0x028e, "Microsoft X-Box 360 pad", 0, XTYPE_XBOX360 },{ 0x045e, 0x028f, "Microsoft X-Box 360 pad v2", 0, XTYPE_XBOX360 },
};

usb设备注册input设备

xpad_probe()
{for (i = 0; xpad_device[i].idVendor; i++) {if ((le16_to_cpu(udev->descriptor.idVendor) == xpad_device[i].idVendor) &&(le16_to_cpu(udev->descriptor.idProduct) == xpad_device[i].idProduct))break;}xpad = kzalloc(sizeof(struct usb_xpad), GFP_KERNEL);if (!xpad)return -ENOMEM;usb_make_path(udev, xpad->phys, sizeof(xpad->phys));strlcat(xpad->phys, "/input0", sizeof(xpad->phys));
}

具体过程可以看usb设备枚举过程文章,书籍.

方法2: 由于ubuntu 系统能识别, 即linux kernel默认支持.

内核代码搜索usb pid
grep --include=*.c --binary-files=without-match -rn --colour=auto 028e

fs/exfat/nls.c:105: 0x01ae, 0x0244, 0x01b1, 0x01b2, 0x0245, 0x028d, 0x028e, 0x028f,
fs/cifs/netmisc.c:761: ERRDOS, ERRnoaccess, 0xc000028e}, {
drivers/input/joystick/xpad.c:125: { 0x045e, 0x028e, “Microsoft X-Box 360 pad”, 0, XTYPE_XBOX360 },

开启xpad.c对应CONFIG_JOYSTICK_XPAD
make ARCH=arm64 menuconfig 开启内核依赖配置.


http://www.ppmy.cn/news/687124.html

相关文章

Python小波包特征提取能量熵

Python小波包特征提取能量熵 小波包分析是一种基于小波函数的信号分析方法,在特征提取中有着广泛的应用。能量熵是小波包分析中一种常用的特征参数,用于描述信号分布的集中性程度。本文将介绍Python中如何使用小波包进行特征提取,并计算能量…

获取Layui iframe页面的url参数

弹出layui iframe页面 layer.open({type: 2, // iframe层skin: layer-ext-blue,title: 弹出窗口,content: "click?hrefcatalogConfig/addCatalog?param1" param1 "&param2" param2, // 弹出的iframe页面地址catalogConfig/addCatalogarea: [1224…

MC起床战争

1.02更新&#xff1a;增加弓箭、死斗模式。&#xff08;提前声明&#xff1a;本版本超吃配置&#xff0c;请确保使用时电脑不烫&#xff09; 代码 #include<algorithm> #include<fstream> #include<iostream> #include<stdio.h> #include<cstdio&…

Minecraft我的世界服务器配置5人/10人/50人玩家搭建mc服务器

我的世界服务器租用10人mc服务器配置如何选&#xff1f;我的世界5人玩家选择腾讯云轻量2核2G4M服务器、Minecraft服务器10人玩家2核4G6M服务器配置、mc服务器20人选4核8G10M、我的世界mc服务器50人或100人选8核16G14M&#xff0c;腾讯云轻量应用服务器搭建我的世界mc服务器&…

在Linux下搭建带MOD 我的世界(Minecraft)服务器

在Linux下搭建带MOD 我的世界&#xff08;Minecraft&#xff09;服务器 系统要求 官方服务器推荐配置要求如下&#xff1a; CPU&#xff1a;Intel Core-Based CPUs or AMD K8-Based CPUs IBM 970 2.0 GHz and better内存&#xff1a;5 GiB硬盘空间&#xff1a;16 GiB上行宽带…

如何免费获取mojang账号教程(mc国际版账号,附礼品码)

一。账号的获取&#xff08;三种方法&#xff09; 1、获取账号有很多种方法&#xff0c;目前已知的就是这个网站&#xff08;点我跳转&#xff09;用积分换取账号&#xff0c;操作如下&#xff08;看不懂英文的可以用百度翻译翻译成中文页面&#xff09;&#xff1a; 1.1选择每…

搭建外网minecraft服务器方案

很多minecraft服务器主都想自己搭建一个外网可以访问的minecraft服务器&#xff0c;在没有外网IP的情况下&#xff0c;一般都是使用Logmein Hamachi方案。这种方案有它的弊端&#xff0c;需要客户机安装Hamachi&#xff0c;十分不方便。另外&#xff0c;免费版只支持5人&#x…

linux搭建 minecraft 我的世界游戏服务器

本篇文章介绍在Linux系统上搭建最新版本Minecraft服务器&#xff0c;并使用bungeecord配置为群组服务器模式。 docker容器方式搭建minecraft服务器查看这篇文章&#xff1a; https://blog.csdn.net/whatday/article/details/108416397 1.Minecraft简介 官方网站&#xff1a…