{"id":2004,"date":"2016-09-17T16:51:37","date_gmt":"2016-09-18T00:51:37","guid":{"rendered":"http:\/\/systemsolver.com\/StatlerBlog\/?p=2004"},"modified":"2016-09-17T16:51:37","modified_gmt":"2016-09-18T00:51:37","slug":"linux-usb-peripheral-information-gathering","status":"publish","type":"post","link":"https:\/\/systemsolver.goodhealthyday.com\/StatlerBlog\/2016\/09\/17\/linux-usb-peripheral-information-gathering\/","title":{"rendered":"linux usb peripheral information gathering plantronics"},"content":{"rendered":"<p>http:\/\/www.helplinux.ru\/wiki\/en:kb:ubuntu-plantronics<\/p>\n<blockquote>\n<h2 class=\"sectionedit2\">Perequisites<\/h2>\n<div class=\"level2\">\n<ul>\n<li class=\"level1\">\n<div class=\"li\">\n<p>Scancodes can be discovered by evtest:<\/p>\n<pre class=\"code bash\"><span class=\"kw2\">sudo<\/span> evtest<\/pre>\n<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">\n<p>Keynames can be discovered in linux\/input.h:<\/p>\n<pre class=\"code bash\"><span class=\"kw2\">less<\/span> <span class=\"sy0\">\/<\/span>usr<span class=\"sy0\">\/<\/span>src<span class=\"sy0\">\/<\/span>linux-headers-$<span class=\"br0\">(<\/span><span class=\"kw2\">uname<\/span> -r<span class=\"br0\">)<\/span><span class=\"sy0\">\/<\/span>include<span class=\"sy0\">\/<\/span>uapi<span class=\"sy0\">\/<\/span>linux<span class=\"sy0\">\/<\/span>input.h<\/pre>\n<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">\n<p>Vendor ID and Product ID can be discovered by lsusb:<\/p>\n<pre class=\"code bash\">lsusb <span class=\"sy0\">|<\/span> <span class=\"kw2\">grep<\/span> <span class=\"re5\">-i<\/span> plantronics<\/pre>\n<\/div>\n<\/li>\n<\/ul>\n<\/div>\n<h2 class=\"sectionedit4\">Ubuntu 13.10 (64-bit only), Ubuntu 14.04<\/h2>\n<div class=\"level2\">\n<ol>\n<li class=\"level1\">\n<div class=\"li\">\n<p>Create file \/etc\/udev\/rules.d\/59-plantronics.rules with the following content:<\/p>\n<pre class=\"code bash\">ACTION<span class=\"sy0\">!<\/span>=<span class=\"st0\">\"add|change\"<\/span>, <span class=\"re2\">GOTO<\/span>=<span class=\"st0\">\"xorg_plantronics_end\"<\/span>\nKERNEL<span class=\"sy0\">!<\/span>=<span class=\"st0\">\"event*\"<\/span>, <span class=\"re2\">GOTO<\/span>=<span class=\"st0\">\"xorg_plantronics_end\"<\/span>\n\u00a0\n<span class=\"re2\">SUBSYSTEMS<\/span>==<span class=\"st0\">\"usb\"<\/span>, ENV<span class=\"br0\">{<\/span>ID_BUS<span class=\"br0\">}<\/span>==<span class=\"st0\">\"\"<\/span>, IMPORT<span class=\"br0\">{<\/span><span class=\"kw3\">builtin<\/span><span class=\"br0\">}<\/span>=<span class=\"st0\">\"usb_id\"<\/span>\n\u00a0\nENV<span class=\"br0\">{<\/span>ID_VENDOR_ID<span class=\"br0\">}<\/span>==<span class=\"st0\">\"047f\"<\/span>, ENV<span class=\"br0\">{<\/span>ID_MODEL_ID<span class=\"br0\">}<\/span>==<span class=\"st0\">\"c013\"<\/span>, ENV<span class=\"br0\">{<\/span>ID_INPUT_KEY<span class=\"br0\">}<\/span>=<span class=\"st0\">\"1\"<\/span>, ENV<span class=\"br0\">{<\/span>ID_INPUT_KEYBOARD<span class=\"br0\">}<\/span>=<span class=\"st0\">\"1\"<\/span>\n\u00a0\n<span class=\"re2\">LABEL<\/span>=<span class=\"st0\">\"xorg_plantronics_end\"<\/span><\/pre>\n<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">\n<p>Create file \/etc\/udev\/hwdb.d\/60-keyboard.hwdb with the following content:<\/p>\n<pre class=\"code bash\"><span class=\"co0\"># Plantronics .Audio 648 USB<\/span>\nkeyboard:usb:v047FpC013<span class=\"sy0\">*<\/span>\n <span class=\"re2\">KEYBOARD_KEY_ffa000b1<\/span>=volumeup\n <span class=\"re2\">KEYBOARD_KEY_ffa000b2<\/span>=volumedown\n <span class=\"re2\">KEYBOARD_KEY_ffa000b5<\/span>=micmute\n <span class=\"re2\">KEYBOARD_KEY_ffa000b7<\/span>=phone\n <span class=\"re2\">KEYBOARD_KEY_ffa000ab<\/span>=unknown<\/pre>\n<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">\n<p>Reload udev rules:<\/p>\n<pre class=\"code bash\"><span class=\"kw2\">sudo<\/span> udevadm hwdb <span class=\"re5\">--update<\/span>\n<span class=\"kw2\">sudo<\/span> udevadm control <span class=\"re5\">--reload<\/span><\/pre>\n<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">Unplug and plug again the usb device.<\/div>\n<\/li>\n<li class=\"level1\">\n<div class=\"li\">Enjoy!<\/div>\n<\/li>\n<\/ol>\n<\/div>\n<\/blockquote>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>===<\/p>\n<p>\/dev\/input\/by-id\/usb-USBest_tec<\/p>\n<pre>evtest \/dev\/input\/eventX\n\n<\/pre>\n<pre>xinput list\n<code>xinput\u00a0test\u00a010<\/code>\n\n\n<\/pre>\n<p>=<\/p>\n<p>&nbsp;<\/p>\n<p>lsusb -t<\/p>\n<p>get DEV info for usb device interested in then:<\/p>\n<p>lsusb -vv -s 6<\/p>\n<p>other?modinfo usbhid<\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"dg9CYzlk3s\"><p><a href=\"https:\/\/www.blackmoreops.com\/2014\/08\/25\/identify-pci-usb-wired-wireless-driver-linux-identify-usb-driver\/\">Identify USB Driver. Ubuntu, Debian, Mint, CentOS, Fedora &#038; all Linux distro<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Identify USB Driver. Ubuntu, Debian, Mint, CentOS, Fedora &#038; all Linux distro&#8221; &#8212; blackMORE Ops\" src=\"https:\/\/www.blackmoreops.com\/2014\/08\/25\/identify-pci-usb-wired-wireless-driver-linux-identify-usb-driver\/embed\/#?secret=PHVCUiir3h#?secret=dg9CYzlk3s\" data-secret=\"dg9CYzlk3s\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p>&#8220;The API provides an easy method to enumerate HID devices attached to the system, and easy access to the functionality of the most commonly used HID functions including transfer of Input, Output, and Feature Reports&#8221;<\/p>\n<p>http:\/\/www.signal11.us\/oss\/hidapi\/<\/p>\n<p>https:\/\/github.com\/signal11\/hidapi<\/p>\n","protected":false},"excerpt":{"rendered":"<p>http:\/\/www.helplinux.ru\/wiki\/en:kb:ubuntu-plantronics Perequisites Scancodes can be discovered by evtest: sudo evtest Keynames can be discovered in linux\/input.h: less \/usr\/src\/linux-headers-$(uname -r)\/include\/uapi\/linux\/input.h Vendor ID and Product ID can be discovered by lsusb: lsusb | grep -i plantronics Ubuntu 13.10 (64-bit only), Ubuntu 14.04 Create file \/etc\/udev\/rules.d\/59-plantronics.rules with the following content: ACTION!=&#8221;add|change&#8221;, GOTO=&#8221;xorg_plantronics_end&#8221; KERNEL!=&#8221;event*&#8221;, GOTO=&#8221;xorg_plantronics_end&#8221; \u00a0 SUBSYSTEMS==&#8221;usb&#8221;, ENV{ID_BUS}==&#8221;&#8221;, IMPORT{builtin}=&#8221;usb_id&#8221; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-2004","post","type-post","status-publish","format-standard","hentry","category-general"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/systemsolver.goodhealthyday.com\/StatlerBlog\/wp-json\/wp\/v2\/posts\/2004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/systemsolver.goodhealthyday.com\/StatlerBlog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/systemsolver.goodhealthyday.com\/StatlerBlog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/systemsolver.goodhealthyday.com\/StatlerBlog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/systemsolver.goodhealthyday.com\/StatlerBlog\/wp-json\/wp\/v2\/comments?post=2004"}],"version-history":[{"count":0,"href":"https:\/\/systemsolver.goodhealthyday.com\/StatlerBlog\/wp-json\/wp\/v2\/posts\/2004\/revisions"}],"wp:attachment":[{"href":"https:\/\/systemsolver.goodhealthyday.com\/StatlerBlog\/wp-json\/wp\/v2\/media?parent=2004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/systemsolver.goodhealthyday.com\/StatlerBlog\/wp-json\/wp\/v2\/categories?post=2004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/systemsolver.goodhealthyday.com\/StatlerBlog\/wp-json\/wp\/v2\/tags?post=2004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}