{"id":21571313,"url":"https://github.com/devmapal/nvidia-shield-controller-driver","last_synced_at":"2025-06-12T19:07:34.177Z","repository":{"id":72379001,"uuid":"62970209","full_name":"devmapal/nvidia-shield-controller-driver","owner":"devmapal","description":"A Work In Progress Linux driver for the NVidia SHIELD Controller over WLAN.","archived":false,"fork":false,"pushed_at":"2016-08-07T15:54:54.000Z","size":129,"stargazers_count":39,"open_issues_count":5,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-18T06:15:45.688Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devmapal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-07-09T21:38:28.000Z","updated_at":"2025-03-02T15:36:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"9b0d4e2d-d716-4f59-8fc4-a560316a40e4","html_url":"https://github.com/devmapal/nvidia-shield-controller-driver","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/devmapal/nvidia-shield-controller-driver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmapal%2Fnvidia-shield-controller-driver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmapal%2Fnvidia-shield-controller-driver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmapal%2Fnvidia-shield-controller-driver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmapal%2Fnvidia-shield-controller-driver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devmapal","download_url":"https://codeload.github.com/devmapal/nvidia-shield-controller-driver/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmapal%2Fnvidia-shield-controller-driver/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259519862,"owners_count":22870371,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-24T11:15:38.729Z","updated_at":"2025-06-12T19:07:34.149Z","avatar_url":"https://github.com/devmapal.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# NVidia Shield Controller Driver\nA Work In Progress Linux driver for the NVidia SHIELD Controller over WLAN.\n\nThe SHIELD Controller uses ozproto (Ethertype 0x892E), exposing an USB HID (the\ncontroller) and 3 USB audio devices (headphone audio sink, headphone audio\nsource if it has a microphone and controller internal audio source\n(microphone).\n\n## Prerequisites\nRequires a WLAN card that can operate in P2P-GO mode.\n\n```\n# iw list\n...\n        Supported interface modes:\n        ...\n                 * P2P-GO\n        ...\n...\n```\n\n## Building the driver\nApply the patch set in `driver` to your kernel sources (currently only tested\nwith a 4.4 kernel) and make sure the following configuration options are set.\n```\nCONFIG_USB_HID=y\nCONFIG_STAGING=y\nCONFIG_USB_WPAN_HCD=m\nCONFIG_SND_USB_AUDIO=y (Optional, for audio support)\n```\n\nYou probably also want\n```\nCONFIG_INPUT_JOYDEV=y\nCONFIG_INPUT_EVDEV=y\n```\n\n## Usage\nThe SHIELD Controller uses WPS Push Button method for pairing, with the PC\nsetting itself as the autonomous Group Owner. Pairing the controller using\nwpa_supplicant works as follows.\n\nEnsure that you have\n```\nupdate_config=1\n```\nset in `wpa_supplicant.conf`. While this is not required, it allows for\nskipping WPS pairing the next time the controller is conntected.\n\n```\n# wpa_cli -i wlp3s0 p2p_group_add persistent\n# wpa_cli -i p2p-wlp3s0-0\n\u003e wps_pbc\n```\n\nNow hold the Nvidia button on the controller until it flashes. When the button\nstops flashing, pairing was successful.\n\nYou can now load the driver with\n\n```\n# modprobe ozwpan g_net_dev=p2p-wlp3s0-0\n```\n\nAfter a few seconds, the controller should be available.\n\n```\n# lsusb\n...\nBus 003 Device 002: ID 0955:7210 NVidia Corp.\n...\n\n# lsusb -t\n...\n/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ozwpan/8p, 12M\n    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M\n    |__ Port 1: Dev 2, If 1, Class=Audio, Driver=snd-usb-audio, 12M\n    |__ Port 1: Dev 2, If 2, Class=Audio, Driver=snd-usb-audio, 12M\n    |__ Port 1: Dev 2, If 3, Class=Audio, Driver=snd-usb-audio, 12M\n...\n```\n\nNote that these instructions assume that wireless interface created is called\n`p2p-wlp3s0-0`.\n\n### Reconnecting the Controller\nFind the network that was created for the controller\n\n```\n# wpa_cli -i wlp3s0 list_networks\nnetwork id / ssid / bssid / flags\n...\n8       DIRECT-0E       a0:a8:cd:0f:64:ce       [DISABLED][P2P-PERSISTENT]\n...\n```\nNote that the network id and bssid will probably be different for you, the the\nssid will always start with `DIRECT-`.\n\n```\n# wpa_cli -i wlp3s0 p2p_group_add persistent=\u003cnetwork-id\u003e\n# modprobe ozwpan g_net_dev=p2p-wlp3s0-0\n```\n\nReplace `\u003cnetwork-id\u003e` the the network id obtained from `wpa_cli -i wlp3s0\nlist_networks`.\n\nNow touch the NVidia button on the controller. It should be connected after a\ncouple of seconds.\n\n## Choppy audio\nIf audio is choppy, try the following PulseAudio configuration.\n\nIn `/etc/pulse/daemon.conf`\n```\ndefault-sample-rate = 32000\ndefault-fragments = 5\ndefault-fragment-size-msec = 2\n```\n\nIn `/etc/pulse/default.pa`\n```\nload-module module-udev-detect tsched=0\n```\n\n## Wireshark dissector\n`wireshark-dissector` contains an ozproto wireshark dissector based on\nhttps://github.com/chunkeey/ozwpan/blob/master/wireshark/0001-OZWPAN-add-initial-OZWPAN-support.patch\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevmapal%2Fnvidia-shield-controller-driver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevmapal%2Fnvidia-shield-controller-driver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevmapal%2Fnvidia-shield-controller-driver/lists"}