{
  "attachments": [],
  "title": "Review: Steam Controller",
  "tags": [
    "reviews",
    "gaming",
    "steam",
    "hardware"
  ],
  "year": "2016",
  "month": "02",
  "day": "05",
  "isDir": false,
  "slug": "steam-controller",
  "type": "entry",
  "date": "2016-02-05T19:00:00.000Z",
  "postName": "2016-02-05-steam-controller",
  "html": "<p><strong>TL;DR</strong>: The <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a> is an odd little duck. But, I'm rooting\nfor it.</p>\n<!--more-->\n\n\n\n<nav role=\"navigation\" class=\"table-of-contents\"></nav>\n\n<p><a href=\"https://www.flickr.com/photos/deusx/24726637531/in/dateposted/\"><img class=\"inset left\" src=\"/uploads/2016/steam-controller/hhkb.jpg\" width=\"\" height=\"\"></a></p>\n<p>I've long been a fan of unusual input devices, the more fiddly the better. </p>\n<p>It's been a little over 15 years since I last used a standard 104-key keyboard\non a PC, having been a <a href=\"http://amzn.to/1nQbo26\">Happy Hacking Keyboard</a> enthusiast ever since I\nfirst <a href=\"http://www.linuxjournal.com/article/3147\">read about it in Linux Journal</a>. </p>\n<p>And, as the gaming world has invested in <a href=\"http://icrontic.com/article/a4tech-v3-bloody-gun3-gaming-mouse-review\">increasingly complex gaming mice</a> over\nthe years, I've been solidly in the trackball camp since the late 1990's when\nI played hours &amp; hours of Quake 2 and Unreal Tournament. </p>\n<p><a href=\"http://vgjunk.tumblr.com/post/63391681929/john-romero-wants-you-to-buy-a-mad-catz-panther-xl\"><img class=\"inset right\" src=\"/uploads/2016/steam-controller/panther-xl.jpg\" width=\"\" height=\"\"></a></p>\n<p>The <a href=\"http://assassin3d.squarespace.com/history-panther-xl/\">Mad Catz Panther XL</a> trackball-and-joystick combo\nwas my favorite for flight &amp; space sims like Freespace. I used a <a href=\"http://amzn.to/1nQby9D:\">Microsoft\nSidewinder Strategic Commander</a> to play Everquest one-handed. (The\nother hand was for tinkering with <a href=\"https://github.com/brainiac/showeq\">ShowEQ</a> on a nearby Linux machine, of course.)</p>\n<p>More recently, when I was playing a space trucker in EVE Online, I would often\nride a recumbent exercise bike and use a <a href=\"http://amzn.to/1NKn0bq\">One Finger Mouse</a> with my\nlaptop to align and warp between stations.</p>\n<p>Given all the above, the <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a> looked completely relevant to my\ninterests when <a href=\"http://kotaku.com/valve-announces-the-steam-controller-a-new-way-to-cont-1411558137\">it was announced</a> way back in 2013. </p>\n<p>Fast forward to November 2015, and after many prototypes &amp; tweaks, <a href=\"http://www.theverge.com/2015/11/10/9705234/valve-steam-machines-controller-link-launch\">it finally\narrived</a>. I managed to wait a month or so, watching for red flags\nin early reviews. But, of course, I gave in and had it in time for my\ntraditional end-of-year holiday gaming binge. <br style=\"clear: both\"></p>\n<h2 id=\"ergonomics\">Ergonomics</h2>\n<img class=\"inset left\" src=\"/uploads/2016/steam-controller/couch-pc.jpg\" width=\"\" height=\"\">\n\n<p>At <a href=\"http://blog.lmorchard.com/2013/01/21/gaming-from-the-orchard-house-couch/\">my couch PC</a>, I use an Xbox 360 controller whenever I can. I don't\nwant to clutter the living room with big weird joysticks &amp; such.</p>\n<p>Besides that, having my hands in a neutral position in my lap seems to\nhelp quite a lot with keeping wrist pain at bay after a day in my office\nalready spent with trackball and keyboard. But, not every game supports a\ncontroller out of the box.</p>\n<p>So, it seemed really promising when I read Valve's claims that the <a href=\"http://amzn.to/1nQzE4f\">Steam\nController</a> would work with \"<a href=\"http://store.steampowered.com/app/353370/\">games from all genres</a>\"\nincluding titles typically bound to a keyboard and mouse.</p>\n<p><a href=\"https://www.flickr.com/photos/deusx/24524584120\"><img class=\"inset right\" src=\"/uploads/2016/steam-controller/all-3-controllers.jpg\" width=\"\" height=\"\"></a></p>\n<p>Now that I've got the <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a> in my hands, it makes my Xbox 360\ncontroller feel tiny. It reminds me a little of the original Xbox controller.\nThough, it's really unfair to take that comparison too far - I mean, that\nthing was bigger than some actual game consoles.</p>\n<p>The Xbox 360 handles taper down into rounded points that cover a third of my\npalm. But, the <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a> bulges out at the bottoms and covers about\nhalf of my palm.  </p>\n<p>It's like the difference between a small chicken egg\nand a jumbo.  (Sorry, I've been cooking today.) And where my fingers curl\ninward toward my palm with the 360 controller, the <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a> has\nthem pointing more toward my chest to accomodate the thicker grips.\n<br style=\"clear: both\"></p>\n<p><a href=\"https://www.flickr.com/photos/deusx/24206620773/in/datetaken/\"><img class=\"inset left\" src=\"/uploads/2016/steam-controller/360-hands.jpg\" width=\"\" height=\"\"></a>\n<a href=\"https://www.flickr.com/photos/deusx/24740006121/in/datetaken/\"><img class=\"inset left\" src=\"/uploads/2016/steam-controller/sc-hands.jpg\" width=\"\" height=\"\"></a></p>\n<p>(And, this is where I realize I was never destined to be a <a href=\"https://www.youtube.com/watch?v=PZxX3-rJoNI\">hand model</a>.)</p>\n<p>The Xbox 360 controller feels like curved handlebars between\nmy palms and the last three fingers, leaving just my index fingers and thumbs\nfree to move. It could be that I've gotten used to it over the years, but the\ndesign of this controller feels like it naturally falls into my relaxed\nhands after I've flopped them lazily into my lap. </p>\n<p>The <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a>, though, seems to call for a more tense grip that I\ncan feel in my shoulders &amp; wrists after awhile. </p>\n<p>To keep things stable as I play, I find myself using some arm muscle &amp; elbow\npressure to wedge it between the bony first knuckles of my index fingers and\nthe bases of my thumbs.  Except for a little stabilization from my pinkies and\nring fingers, this leaves the rest of my fingers free to reach the thumbpads\nand buttons. <br style=\"clear: both\"></p>\n<p><a href=\"https://www.flickr.com/photos/deusx/24726646081/in/dateposted-public/\"><img class=\"inset right\" src=\"/uploads/2016/steam-controller/sides.jpg\" width=\"\" height=\"\"></a>\n<a href=\"https://www.flickr.com/photos/deusx/24702264542/in/dateposted-public/\"><img class=\"inset right\" src=\"/uploads/2016/steam-controller/backs.jpg\" width=\"\" height=\"\"></a></p>\n<p>The face of the Xbox 360 controller follows a convex curve. When relaxed, my\nextended thumbs arch over that curve, their pads resting on the left stick and\nright button cluster.</p>\n<p>The face of the <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a> is concave, almost the inverse of the\nother controller. My bent thumbs hover over a pair of circular trackpads,\nwhich are far better controlled with strokes from thumb tips than by swiping or\nrolling flat thumb pads across them.</p>\n<p>Overall, I can't say I'm entirely comfortable with the <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a> in\nmy hands. That worries me a little after years of being unkind to my wrists.\nI'm still adjusting my grip on the thing, though. Maybe I'll get used to it. \nAfter all, I spent years with the first NES gamepad - and it was no ergonomic\nmarvel.\n<br style=\"clear: both\"></p>\n<h2 id=\"hardware\">Hardware</h2>\n<p>In terms of input hardware, the <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a> offers interesting\nimprovements over my trusty old Xbox 360 controller.</p>\n<p><a href=\"https://www.flickr.com/photos/deusx/24525157630/in/photostream/\"><img id=\"thumbnail\" class=\"inset wide left\" src=\"/uploads/2016/steam-controller/sc-top.jpg\" width=\"\" height=\"\"></a></p>\n<p>On the front, there's the \"Valve\" button flanked by a back &amp; start buttons.\nThere's also an analog clicky joystick and an X/Y/A/B button cluster. </p>\n<p>But, the <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a>'s special sauce is the pair of trackpads at the\ntop of the controller. More detail about those when I get to writing about the\nsoftware.</p>\n<p>Beneath these trackpads are the <a href=\"http://www.precisionmicrodrives.com/vibrating-vibrator-vibration-motors/linear-resonant-actuator-lra-haptic-vibration-motors\">linear resonant actuators</a> used for haptic\nfeedback. Interestingly, I haven't found any games that can use these haptic actuators\nto generate in-game vibration. They seem limited to haptics for controller\nmodes, so far.</p>\n<p><a href=\"https://www.flickr.com/photos/deusx/24820691505/in/dateposted/\"><img class=\"inset wide left\" src=\"/uploads/2016/steam-controller/sc-back.jpg\" width=\"\" height=\"\"></a></p>\n<p>On the back, there's a pair of shoulder buttons and analog triggers that bottom\nout in clicks like a GameCube controller. Along the handgrips lie two more wide buttons under the\nmiddle &amp; ring fingers.  The plate for those buttons doubles as the battery\ndoor, and one AA battery hides inside each of the handgrips.</p>\n<p><a href=\"https://www.flickr.com/photos/deusx/24727371301/in/dateposted/\"><img class=\"inset wide left\" src=\"/uploads/2016/steam-controller/sc-back-open.jpg\" width=\"\" height=\"\"></a></p>\n<p>On the inside, there are gyro and accelerometer sensors to detect motion and\norientation of the controller. </p>\n<p>If you want to see more of the innards, \nconsult the folks at <a href=\"https://www.ifixit.com/\">iFixit</a>. They did <a href=\"https://www.ifixit.com/Teardown/Steam+Controller+Teardown/52578\">a great job of documenting their Steam\nController teardown</a>, saving me from feeling like I\nshould open mine up for the sake of this post.</p>\n<p>(But, who am I kidding? I'll open it up at some point, because that's\nwhat I do with all my toys.)</p>\n<p>As for power, the controller can run tethered via a micro-USB cable, or\nwirelessly using an included a USB dongle and a pair of AA batteries. </p>\n<p>You can use rechargeables,\nbut the controller itself does not charge them while plugged in. I'd like to\nsee Valve come up with a rechargeable pack at some point.\n<br style=\"clear: both\"></p>\n<h2 id=\"software\">Software</h2>\n<p>The physical design and laundry list of sensors is vaguely interesting. But,\nwhat really makes the <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a> shine - and sometimes stink - is\nthe software. And, that software is Steam in Big Picture Mode.</p>\n<img class=\"fullwidth\" src=\"/uploads/2016/steam-controller/big-picture-home.jpg\" width=\"\" height=\"\">\n\n<p>The only way to configure the Controller is via Big Picture mode.\nAnd, as far as I can tell, launching games (even non-Steam games) via Big\nPicture is the only way to load game-specific configurations. </p>\n<p>I understand that this thing was designed to be paired with a Steam Machine\nand played on a TV. But, I don't play in front of a TV - and I doubt many PC\ngamers do. I find Big Picture Mode clunky and occasionally crashy. A few\ntimes, the controller has gone non-responsive or got loaded with the wrong\nconfiguration. </p>\n<p>After <a href=\"http://store.steampowered.com/controller/update/dec15\">the firmware update in December</a>, my configuration changes\nare often reverted &amp; lost. Sometimes the Big Picture interface offers up\ndelays &amp; progress animations with no explanation of what's happening. I'm\nhoping I can troll the forums for some fixes, but having to do that is a bit\ndisappointing.</p>\n<p>It's early days yet, so things could get better with future patches. Valve\nshows every indication that they plan to support this device for the long\nhaul.  Still, I'd love it if Valve (or the community) released an \"expert\"\nconfiguration tool as a straightforward desktop Windows application.  Just let\nme quickly assign bindings in a solid, ugly, utilitarian interface and let me\nmanually save &amp; load configurations.</p>\n<img class=\"fullwidth\" src=\"/uploads/2016/steam-controller/controller-config.png\" width=\"\" height=\"\">\n\n<p>The awkwardness is frustrating, because configuration is the whole reason the\ncontroller exists: I put up with the annoying UI because the result is\ninteresting. With a little tweaking, it really can generate whatever inputs are\nneeded for any game I want to play.</p>\n<p>Except for the Valve button, there are 17 other buttons on the device available\nto generate any combination of keyboard &amp; mouse signals. That includes the\nclicky trackpads &amp; joystick - and I'm counting the analog triggers twice,\nbecause you can set different inputs for both partial and full pulls.</p>\n<img class=\"fullwidth\" src=\"/uploads/2016/steam-controller/trackpad-config.png\" width=\"\" height=\"\">\n\n<p>And then, there are the trackpads: In a nutshell, either trackpad can be\nconfigured as a mouse, an analog joystick, a digital d-pad, a cluster of\nbuttons, or to summon up overlay menus triggering arbitrary inputs. There are 9\ndifferent modes covering slightly different simulations of these devices. Each\nmode comes with its own control panel offering an array of sliders, variants,\nand advanced settings.</p>\n<p>For button input, there are ways to define segments of the trackpad as virtual\nbuttons activated on touch or by clicking down the pad.  Joystick input comes\nin a few subtly different flavors I haven't yet fully explored. </p>\n<p>I've also not played much with touch menus. These consist of Steam-generated\noverlays offering up to 16 buttons plus an alternate layer of 16 more.\nBetween both trackpads, this can add up to 64 different virtual buttons\ntriggering whatever keyboard, mouse, or gamepad combinations I'd like.</p>\n<p>For pointer input, there's a mouse mode similar to a laptop trackpad, with\nvarious acceleration and sensitivity settings. To my personal delight, there's\na trackball mode: the pad signals momentum through haptic rasping that\ntrails off after your thumb has lifted from a swipe - and it stops immediately\nwhen your thumb returns to the pad. </p>\n<p>You can also enable scroll wheel inputs via the raised outer edges of the\ntrackpads. It feels like to the old click-wheel iPods. </p>\n<img class=\"fullwidth\" src=\"/uploads/2016/steam-controller/controller-config-import.png\" width=\"\" height=\"\">\n\n<p>If all this sounds overwhelming, Steam offers ready-made crowdsourced\nconfigurations.  These are created by game developers, Valve, and shared by\nthe community at large. This means that I don't have to wait for all the\ndevelopers in the world to get around to supporting this particular weird\ncontroller. Ideally, as time goes on, control schemes will arrive that hit a\nsweet spot for every game.</p>\n<p>Valve has certainly thrown a lot at the wall here. We'll see how much sticks.\nIt certainly scratches my itch for a fiddly input device, in any case.</p>\n<h2 id=\"compatibility\">Compatibility</h2>\n<p>In a nutshell, if it accepts mouse, keyboard, joystick, or gamepad - the\n<a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a> works. In this, the marketing is correct and it does what\nit says on the tin.  The more pressing issue is whether the Controller is\ncompatible with <em>me</em> as an interface to <em>the games I like</em>.</p>\n<p>Of course, it should be noted that I'm by no means a pro gamer. I'm\nthe filthiest of casuals - whatever that means after playing video games avidly\nfor 30 years. I'm in it for fun, couldn't care less about being competitive.</p>\n<p>I've had the most luck in mouse-and-keyboard games like the ponderously-paced\n<a href=\"http://www.failbettergames.com/sunless/\">Sunless Sea</a> and even in the more frenetic <a href=\"http://us.battle.net/d3/en/\">Diablo III</a>. Of course, at\ntimes, I lose track of the pointer in Diablo when I'm spazzing out with my\nthumb and flinging it around between targets and running away to kite things.\nThat seems to get better as I turn down acceleration and play with\nsensitivity. The newer Mouse Regions mode looks interesting, too, as it\nprovides a direct screen-to-trackpad map rather than mouse or trackball style\ninput. </p>\n<p>For what it's worth, <a href=\"http://kotaku.com/how-league-of-legends-enables-toxicity-1693572469\">I don't play a lot of MOBAs lately</a>, but I\ncan imagine the dynamics are similar to Diablo.</p>\n<p>I also played a bit of <a href=\"http://store.steampowered.com/app/440/\">Team Fortress 2</a>. As promised, I was able to use\na trackpad for steering &amp; coarse aiming and then tilt the controller itself to\nrefine my aim. Like many things with this device, it takes a bit of getting\nused to and kind of turns it into a new game. Fun-ish, but I'm not great at it\nyet.</p>\n<p><a href=\"http://store.steampowered.com/app/252950/\">Rocket League</a> worked out pretty well - in that I was equally terrible both\nwith the <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a> and the Xbox 360 controller. I had a lot of fun\nand never felt like I could blame the controller. Again, I'm just a filthy\ncasual.</p>\n<p>I didn't have as much luck with <a href=\"http://store.steampowered.com/app/323040/\">Laserlife</a>, a surreal rhythm game in the\ntradition of Rez where you guide twin laser trails through targets with analog\nsticks. Ideally, I should be able to use the two trackpads as analog sticks.\nBut, I did a lot better going back to the physical sticks on my Xbox 360\ncontroller. I think the spring resistance in the physical joysticks helped cue\nme into its position. </p>\n<p>The issue seems similar to how I rarely get along with on-screen\ncontrols in smartphone games. But, these trackpads have an advantage\nover virtual glass joysticks - i.e. tactile cues like their surface curve,\nraised edges, and the embossed d-pad shape. I'd like to see if I can find\nworkable settings, because twin-stick shooters are one of my favorite genres.</p>\n<p><a href=\"https://www.elitedangerous.com/\">Elite Dangerous</a> offers a kind of bottomless pit of customization.  It's a\nwork in progress translating my mouse-and-keyboard controls to a comfortable\nscheme on the Controller. For example, it was stupid fun tying pitch and roll\nto the motion sensors and flying the controller around like a model spaceship.\n(I made zoomy-whoosh-pew-pew noises, too.) I've seen other control schemes use\nthe gyro for looking around the cockpit, which is actually used to summon up\nvarious ship panels via gaze. This won't replace <a href=\"https://www.youtube.com/watch?v=AvAI3l0v62E\">a super-immersive HOTAS &amp;\nhead tracking setup</a>, but I think I can get it to an enjoyable\npoint.</p>\n<p>Overall, I've had decent luck with the games I play. Where things\nhaven't quite worked out, I have a hunch that there's a workable control\nscheme somewhere inside the giant bag of options on offer. I've seen some\nfolks describe the process a bit like getting accustomed to a new keyboard\nlayout like Dvorak. That's oddly interesting to me, so I'm going to keep\npoking at it.</p>\n<h2 id=\"hackability\">Hackability</h2>\n<p>The Controller is a USB HID composite device - in other words, It <em>is</em> a mouse\n<em>and</em> a keyboard <em>and</em> a joystick <em>and</em> a gamepad, as far as USB is concerned.</p>\n<p>I've gotten the sense that Steam does <em>something</em> with the Controller input,\nbut I'm not sure if it analgous to things like <a href=\"http://joytokey.net/en/\">JoyToKey</a> or <a href=\"https://autohotkey.com/\">AutoHotKey</a>\nto translate things on the PC side. My guess is that it leans most heavily on\nprocessing in the controller itself to emit standard USB messages to\nachieve maximum compatibility in games.</p>\n<p><a href=\"https://www.flickr.com/photos/deusx/24639522001/in/dateposted-public/\"><img class=\"inset left\" src=\"/uploads/2016/steam-controller/teensy-keyboard.jpg\" width=\"\" height=\"\"></a></p>\n<p>Considering the things found in the <a href=\"https://www.ifixit.com/Teardown/Steam+Controller+Teardown/52578\">iFixit teardown</a>,\nI'm not seeing any particularly exotic parts. Valve stated early on that \"<a href=\"http://hackaday.com/2013/10/01/steam-controller-open-and-hackable/\">the\nSteam Controller was designed from the ground up to be hackable</a>\".</p>\n<p>For example, from <a href=\"https://www.reddit.com/r/SteamControllerMods/comments/3p6d26/some_details_on_the_chips_in_the_controller_and/\">a Reddit thread</a>, I\nlearned that the <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a> is built around the <a href=\"http://www.arm.com/products/processors/cortex-m/cortex-m0.php\">ARM\nCortex-M0</a>. That's similar to the <a href=\"http://www.arm.com/products/processors/cortex-m/cortex-m0plus.php\">ARM Cortex-M0+</a>\nused in the <a href=\"https://www.pjrc.com/store/teensylc.html\">Teensy LC</a>. </p>\n<p>This is interesting, because I've been reading up on how to build a custom\nkeyboard. (You know, as one does.) In the course of that, I've been\nacquainting myself with the <a href=\"https://www.pjrc.com/teensy/\">Teensy line of USB development boards</a>.</p>\n<p>Lately, I've been playing with the <a href=\"https://www.pjrc.com/store/teensy.html\">Teensy 2.0</a>. That seems to be\npopular in the DIY community for how easy it makes implementing \nUSB devices.  Granted, that's a different microcontroller (an <a href=\"http://www.atmel.com/devices/atmega32u4.aspx\">Atmel\nATmega32u4</a>), but I'm hoping that general experience with things like the\nTeensy family of dev boards can eventually translate to some personal fun and\nsome community firmware to explore the potential of the <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a>.</p>\n<p>As it is, someone's already figured out how to <a href=\"https://steamcommunity.com/app/353370/discussions/0/494632506573267894/\">play music through the haptic\nactuators</a> and they released the <a href=\"https://gitlab.com/Pilatomic/SteamControllerSinger\">source\ncode</a>.  That's more a function of decoding the \nprotocol from PC to Controller than messing around with the microcontrollers,\nbut it's still pretty cool.</p>\n<p>It would be great if Valve released more docs &amp; code around this thing. I\ncan understand that there might be some pressure to keep the Steam hardware &amp;\nsoftware ecosystem cohesive. But, for a weird little device like this, I\nimagine they'd only get more sales by fully opening everything up and letting\nthe tinkering world pave the way for more uses - and maybe fix a few bugs for\nthem as clever folks scratch their own itches.</p>\n<h2 id=\"conclusion\">Conclusion</h2>\n<p>The <a href=\"http://amzn.to/1nQzE4f\">Steam Controller</a> is an odd little duck. It's a bit awkward to hold\nand the software is not great. But, software can be fixed and the controls &amp;\nsensors onboard have so much great potential for PC gaming. </p>\n<p>This is clearly not a mature, finished product - which is disappointing,\nbecause I paid money for it - but I'm really rooting for it. And I've already\nused it for dozens of hours in games, so it's obviously worked for me in many\ncapacities. I'm really hoping that Valve follows through on their promises to\nopen things up for tinkering - because it might be the thing that ultimately\nredeems the whole project.</p>\n<!-- vim: set wrap wm=5 syntax=markdown textwidth=78: -->\n",
  "body": "**TL;DR**: The [Steam Controller][] is an odd little duck. But, I'm rooting\nfor it.\n\n<!--more-->\n\n<nav role=\"navigation\" class=\"table-of-contents\"></nav>\n\n[<img class=\"inset left\" src=\"/uploads/2016/steam-controller/hhkb.jpg\">](https://www.flickr.com/photos/deusx/24726637531/in/dateposted/)\n\nI've long been a fan of unusual input devices, the more fiddly the better. \n\nIt's been a little over 15 years since I last used a standard 104-key keyboard\non a PC, having been a [Happy Hacking Keyboard][hhkb] enthusiast ever since I\nfirst [read about it in Linux Journal][hhkb-review]. \n\n[hhkb-review]: http://www.linuxjournal.com/article/3147\n[hhkb]: http://amzn.to/1nQbo26\n\nAnd, as the gaming world has invested in [increasingly complex gaming mice][gamingmice] over\nthe years, I've been solidly in the trackball camp since the late 1990's when\nI played hours & hours of Quake 2 and Unreal Tournament. \n\n[gamingmice]: http://icrontic.com/article/a4tech-v3-bloody-gun3-gaming-mouse-review\n\n[<img class=\"inset right\" src=\"/uploads/2016/steam-controller/panther-xl.jpg\">](http://vgjunk.tumblr.com/post/63391681929/john-romero-wants-you-to-buy-a-mad-catz-panther-xl)\n\nThe [Mad Catz Panther XL][pantherxl] trackball-and-joystick combo\nwas my favorite for flight & space sims like Freespace. I used a [Microsoft\nSidewinder Strategic Commander][msssc] to play Everquest one-handed. (The\nother hand was for tinkering with [ShowEQ][] on a nearby Linux machine, of course.)\n\n[showeq]: https://github.com/brainiac/showeq\n\nMore recently, when I was playing a space trucker in EVE Online, I would often\nride a recumbent exercise bike and use a [One Finger Mouse][ofm] with my\nlaptop to align and warp between stations.\n\n[msssc]: http://amzn.to/1nQby9D:\n[pantherxl]: http://assassin3d.squarespace.com/history-panther-xl/ \n[ofm]: http://amzn.to/1NKn0bq\n\nGiven all the above, the [Steam Controller][] looked completely relevant to my\ninterests when [it was announced][scannounce] way back in 2013. \n\nFast forward to November 2015, and after many prototypes & tweaks, [it finally\narrived][screleased]. I managed to wait a month or so, watching for red flags\nin early reviews. But, of course, I gave in and had it in time for my\ntraditional end-of-year holiday gaming binge. <br style=\"clear: both\">\n\n[scannounce]: http://kotaku.com/valve-announces-the-steam-controller-a-new-way-to-cont-1411558137\n[screleased]: http://www.theverge.com/2015/11/10/9705234/valve-steam-machines-controller-link-launch\n[Steam Controller]: http://amzn.to/1nQzE4f\n\n## Ergonomics\n\n<img class=\"inset left\" src=\"/uploads/2016/steam-controller/couch-pc.jpg\">\n\nAt [my couch PC][couchpc], I use an Xbox 360 controller whenever I can. I don't\nwant to clutter the living room with big weird joysticks & such.\n\n[couchpc]: http://blog.lmorchard.com/2013/01/21/gaming-from-the-orchard-house-couch/\n\nBesides that, having my hands in a neutral position in my lap seems to\nhelp quite a lot with keeping wrist pain at bay after a day in my office\nalready spent with trackball and keyboard. But, not every game supports a\ncontroller out of the box.\n\nSo, it seemed really promising when I read Valve's claims that the [Steam\nController][] would work with \"[games from all genres][steamhardware]\"\nincluding titles typically bound to a keyboard and mouse.\n\n[steamhardware]: http://store.steampowered.com/app/353370/\n\n[<img class=\"inset right\" src=\"/uploads/2016/steam-controller/all-3-controllers.jpg\">](https://www.flickr.com/photos/deusx/24524584120)\n\nNow that I've got the [Steam Controller][] in my hands, it makes my Xbox 360\ncontroller feel tiny. It reminds me a little of the original Xbox controller.\nThough, it's really unfair to take that comparison too far - I mean, that\nthing was bigger than some actual game consoles.\n\nThe Xbox 360 handles taper down into rounded points that cover a third of my\npalm. But, the [Steam Controller][] bulges out at the bottoms and covers about\nhalf of my palm.  \n\nIt's like the difference between a small chicken egg\nand a jumbo.  (Sorry, I've been cooking today.) And where my fingers curl\ninward toward my palm with the 360 controller, the [Steam Controller][] has\nthem pointing more toward my chest to accomodate the thicker grips.\n<br style=\"clear: both\">\n\n[<img class=\"inset left\" src=\"/uploads/2016/steam-controller/360-hands.jpg\">](https://www.flickr.com/photos/deusx/24206620773/in/datetaken/)\n[<img class=\"inset left\" src=\"/uploads/2016/steam-controller/sc-hands.jpg\">](https://www.flickr.com/photos/deusx/24740006121/in/datetaken/)\n\n(And, this is where I realize I was never destined to be a [hand model][].)\n\n[hand model]: https://www.youtube.com/watch?v=PZxX3-rJoNI\n\nThe Xbox 360 controller feels like curved handlebars between\nmy palms and the last three fingers, leaving just my index fingers and thumbs\nfree to move. It could be that I've gotten used to it over the years, but the\ndesign of this controller feels like it naturally falls into my relaxed\nhands after I've flopped them lazily into my lap. \n\nThe [Steam Controller][], though, seems to call for a more tense grip that I\ncan feel in my shoulders & wrists after awhile. \n\nTo keep things stable as I play, I find myself using some arm muscle & elbow\npressure to wedge it between the bony first knuckles of my index fingers and\nthe bases of my thumbs.  Except for a little stabilization from my pinkies and\nring fingers, this leaves the rest of my fingers free to reach the thumbpads\nand buttons. <br style=\"clear: both\">\n\n[<img class=\"inset right\" src=\"/uploads/2016/steam-controller/sides.jpg\">](https://www.flickr.com/photos/deusx/24726646081/in/dateposted-public/)\n[<img class=\"inset right\" src=\"/uploads/2016/steam-controller/backs.jpg\">](https://www.flickr.com/photos/deusx/24702264542/in/dateposted-public/)\n\nThe face of the Xbox 360 controller follows a convex curve. When relaxed, my\nextended thumbs arch over that curve, their pads resting on the left stick and\nright button cluster.\n\nThe face of the [Steam Controller][] is concave, almost the inverse of the\nother controller. My bent thumbs hover over a pair of circular trackpads,\nwhich are far better controlled with strokes from thumb tips than by swiping or\nrolling flat thumb pads across them.\n\n[dpbone]: https://en.wikipedia.org/wiki/Phalanx_bone#Distal_phalanx\n\nOverall, I can't say I'm entirely comfortable with the [Steam Controller][] in\nmy hands. That worries me a little after years of being unkind to my wrists.\nI'm still adjusting my grip on the thing, though. Maybe I'll get used to it. \nAfter all, I spent years with the first NES gamepad - and it was no ergonomic\nmarvel.\n<br style=\"clear: both\">\n\n## Hardware\n\nIn terms of input hardware, the [Steam Controller][] offers interesting\nimprovements over my trusty old Xbox 360 controller.\n\n[<img id=\"thumbnail\" class=\"inset wide left\" src=\"/uploads/2016/steam-controller/sc-top.jpg\">](https://www.flickr.com/photos/deusx/24525157630/in/photostream/)\n\nOn the front, there's the \"Valve\" button flanked by a back & start buttons.\nThere's also an analog clicky joystick and an X/Y/A/B button cluster. \n\nBut, the [Steam Controller][]'s special sauce is the pair of trackpads at the\ntop of the controller. More detail about those when I get to writing about the\nsoftware.\n\nBeneath these trackpads are the [linear resonant actuators][lra] used for haptic\nfeedback. Interestingly, I haven't found any games that can use these haptic actuators\nto generate in-game vibration. They seem limited to haptics for controller\nmodes, so far.\n\n[lra]: http://www.precisionmicrodrives.com/vibrating-vibrator-vibration-motors/linear-resonant-actuator-lra-haptic-vibration-motors\n\n[<img class=\"inset wide left\" src=\"/uploads/2016/steam-controller/sc-back.jpg\">](https://www.flickr.com/photos/deusx/24820691505/in/dateposted/)\n\nOn the back, there's a pair of shoulder buttons and analog triggers that bottom\nout in clicks like a GameCube controller. Along the handgrips lie two more wide buttons under the\nmiddle & ring fingers.  The plate for those buttons doubles as the battery\ndoor, and one AA battery hides inside each of the handgrips.\n\n[<img class=\"inset wide left\" src=\"/uploads/2016/steam-controller/sc-back-open.jpg\">](https://www.flickr.com/photos/deusx/24727371301/in/dateposted/)\n\nOn the inside, there are gyro and accelerometer sensors to detect motion and\norientation of the controller. \n\nIf you want to see more of the innards, \nconsult the folks at [iFixit][]. They did [a great job of documenting their Steam\nController teardown][teardown], saving me from feeling like I\nshould open mine up for the sake of this post.\n\n(But, who am I kidding? I'll open it up at some point, because that's\nwhat I do with all my toys.)\n\nAs for power, the controller can run tethered via a micro-USB cable, or\nwirelessly using an included a USB dongle and a pair of AA batteries. \n\nYou can use rechargeables,\nbut the controller itself does not charge them while plugged in. I'd like to\nsee Valve come up with a rechargeable pack at some point.\n<br style=\"clear: both\">\n\n[teardown]: https://www.ifixit.com/Teardown/Steam+Controller+Teardown/52578\n[ifixit]: https://www.ifixit.com/\n\n## Software\n\nThe physical design and laundry list of sensors is vaguely interesting. But,\nwhat really makes the [Steam Controller][] shine - and sometimes stink - is\nthe software. And, that software is Steam in Big Picture Mode.\n\n<img class=\"fullwidth\" src=\"/uploads/2016/steam-controller/big-picture-home.jpg\">\n\nThe only way to configure the Controller is via Big Picture mode.\nAnd, as far as I can tell, launching games (even non-Steam games) via Big\nPicture is the only way to load game-specific configurations. \n\nI understand that this thing was designed to be paired with a Steam Machine\nand played on a TV. But, I don't play in front of a TV - and I doubt many PC\ngamers do. I find Big Picture Mode clunky and occasionally crashy. A few\ntimes, the controller has gone non-responsive or got loaded with the wrong\nconfiguration. \n\nAfter [the firmware update in December][scdecpatch], my configuration changes\nare often reverted & lost. Sometimes the Big Picture interface offers up\ndelays & progress animations with no explanation of what's happening. I'm\nhoping I can troll the forums for some fixes, but having to do that is a bit\ndisappointing.\n\n[scdecpatch]: http://store.steampowered.com/controller/update/dec15\n\nIt's early days yet, so things could get better with future patches. Valve\nshows every indication that they plan to support this device for the long\nhaul.  Still, I'd love it if Valve (or the community) released an \"expert\"\nconfiguration tool as a straightforward desktop Windows application.  Just let\nme quickly assign bindings in a solid, ugly, utilitarian interface and let me\nmanually save & load configurations.\n\n<img class=\"fullwidth\" src=\"/uploads/2016/steam-controller/controller-config.png\">\n\nThe awkwardness is frustrating, because configuration is the whole reason the\ncontroller exists: I put up with the annoying UI because the result is\ninteresting. With a little tweaking, it really can generate whatever inputs are\nneeded for any game I want to play.\n\nExcept for the Valve button, there are 17 other buttons on the device available\nto generate any combination of keyboard & mouse signals. That includes the\nclicky trackpads & joystick - and I'm counting the analog triggers twice,\nbecause you can set different inputs for both partial and full pulls.\n\n<img class=\"fullwidth\" src=\"/uploads/2016/steam-controller/trackpad-config.png\">\n\nAnd then, there are the trackpads: In a nutshell, either trackpad can be\nconfigured as a mouse, an analog joystick, a digital d-pad, a cluster of\nbuttons, or to summon up overlay menus triggering arbitrary inputs. There are 9\ndifferent modes covering slightly different simulations of these devices. Each\nmode comes with its own control panel offering an array of sliders, variants,\nand advanced settings.\n\nFor button input, there are ways to define segments of the trackpad as virtual\nbuttons activated on touch or by clicking down the pad.  Joystick input comes\nin a few subtly different flavors I haven't yet fully explored. \n\nI've also not played much with touch menus. These consist of Steam-generated\noverlays offering up to 16 buttons plus an alternate layer of 16 more.\nBetween both trackpads, this can add up to 64 different virtual buttons\ntriggering whatever keyboard, mouse, or gamepad combinations I'd like.\n\nFor pointer input, there's a mouse mode similar to a laptop trackpad, with\nvarious acceleration and sensitivity settings. To my personal delight, there's\na trackball mode: the pad signals momentum through haptic rasping that\ntrails off after your thumb has lifted from a swipe - and it stops immediately\nwhen your thumb returns to the pad. \n\nYou can also enable scroll wheel inputs via the raised outer edges of the\ntrackpads. It feels like to the old click-wheel iPods. \n\n<img class=\"fullwidth\" src=\"/uploads/2016/steam-controller/controller-config-import.png\">\n\nIf all this sounds overwhelming, Steam offers ready-made crowdsourced\nconfigurations.  These are created by game developers, Valve, and shared by\nthe community at large. This means that I don't have to wait for all the\ndevelopers in the world to get around to supporting this particular weird\ncontroller. Ideally, as time goes on, control schemes will arrive that hit a\nsweet spot for every game.\n\nValve has certainly thrown a lot at the wall here. We'll see how much sticks.\nIt certainly scratches my itch for a fiddly input device, in any case.\n\n## Compatibility\n\nIn a nutshell, if it accepts mouse, keyboard, joystick, or gamepad - the\n[Steam Controller][] works. In this, the marketing is correct and it does what\nit says on the tin.  The more pressing issue is whether the Controller is\ncompatible with *me* as an interface to *the games I like*.\n\nOf course, it should be noted that I'm by no means a pro gamer. I'm\nthe filthiest of casuals - whatever that means after playing video games avidly\nfor 30 years. I'm in it for fun, couldn't care less about being competitive.\n\nI've had the most luck in mouse-and-keyboard games like the ponderously-paced\n[Sunless Sea][] and even in the more frenetic [Diablo III][]. Of course, at\ntimes, I lose track of the pointer in Diablo when I'm spazzing out with my\nthumb and flinging it around between targets and running away to kite things.\nThat seems to get better as I turn down acceleration and play with\nsensitivity. The newer Mouse Regions mode looks interesting, too, as it\nprovides a direct screen-to-trackpad map rather than mouse or trackball style\ninput. \n\nFor what it's worth, [I don't play a lot of MOBAs lately][mobatoxic], but I\ncan imagine the dynamics are similar to Diablo.\n\n[mobatoxic]: http://kotaku.com/how-league-of-legends-enables-toxicity-1693572469\n\nI also played a bit of [Team Fortress 2][tf2]. As promised, I was able to use\na trackpad for steering & coarse aiming and then tilt the controller itself to\nrefine my aim. Like many things with this device, it takes a bit of getting\nused to and kind of turns it into a new game. Fun-ish, but I'm not great at it\nyet.\n\n[tf2]: http://store.steampowered.com/app/440/\n\n[Rocket League][] worked out pretty well - in that I was equally terrible both\nwith the [Steam Controller][] and the Xbox 360 controller. I had a lot of fun\nand never felt like I could blame the controller. Again, I'm just a filthy\ncasual.\n\nI didn't have as much luck with [Laserlife][], a surreal rhythm game in the\ntradition of Rez where you guide twin laser trails through targets with analog\nsticks. Ideally, I should be able to use the two trackpads as analog sticks.\nBut, I did a lot better going back to the physical sticks on my Xbox 360\ncontroller. I think the spring resistance in the physical joysticks helped cue\nme into its position. \n\nThe issue seems similar to how I rarely get along with on-screen\ncontrols in smartphone games. But, these trackpads have an advantage\nover virtual glass joysticks - i.e. tactile cues like their surface curve,\nraised edges, and the embossed d-pad shape. I'd like to see if I can find\nworkable settings, because twin-stick shooters are one of my favorite genres.\n\n[Elite Dangerous][] offers a kind of bottomless pit of customization.  It's a\nwork in progress translating my mouse-and-keyboard controls to a comfortable\nscheme on the Controller. For example, it was stupid fun tying pitch and roll\nto the motion sensors and flying the controller around like a model spaceship.\n(I made zoomy-whoosh-pew-pew noises, too.) I've seen other control schemes use\nthe gyro for looking around the cockpit, which is actually used to summon up\nvarious ship panels via gaze. This won't replace [a super-immersive HOTAS &\nhead tracking setup][eliteimmersive], but I think I can get it to an enjoyable\npoint.\n\n[eliteimmersive]: https://www.youtube.com/watch?v=AvAI3l0v62E\n[Sunless Sea]: http://www.failbettergames.com/sunless/\n[Diablo III]: http://us.battle.net/d3/en/\n[Laserlife]: http://store.steampowered.com/app/323040/\n[Rocket League]: http://store.steampowered.com/app/252950/\n[Elite Dangerous]: https://www.elitedangerous.com/\n \nOverall, I've had decent luck with the games I play. Where things\nhaven't quite worked out, I have a hunch that there's a workable control\nscheme somewhere inside the giant bag of options on offer. I've seen some\nfolks describe the process a bit like getting accustomed to a new keyboard\nlayout like Dvorak. That's oddly interesting to me, so I'm going to keep\npoking at it.\n\n## Hackability\n\nThe Controller is a USB HID composite device - in other words, It *is* a mouse\n*and* a keyboard *and* a joystick *and* a gamepad, as far as USB is concerned.\n\nI've gotten the sense that Steam does *something* with the Controller input,\nbut I'm not sure if it analgous to things like [JoyToKey][] or [AutoHotKey][]\nto translate things on the PC side. My guess is that it leans most heavily on\nprocessing in the controller itself to emit standard USB messages to\nachieve maximum compatibility in games.\n\n[JoyToKey]: http://joytokey.net/en/\n[AutoHotKey]: https://autohotkey.com/\n\n[<img class=\"inset left\" src=\"/uploads/2016/steam-controller/teensy-keyboard.jpg\">](https://www.flickr.com/photos/deusx/24639522001/in/dateposted-public/)\n\nConsidering the things found in the [iFixit teardown][teardown],\nI'm not seeing any particularly exotic parts. Valve stated early on that \"[the\nSteam Controller was designed from the ground up to be hackable][schackable]\".\n\nFor example, from [a Reddit thread][reddit-chips], I\nlearned that the [Steam Controller][] is built around the [ARM\nCortex-M0][cortex-m0]. That's similar to the [ARM Cortex-M0+][cortex-m0-plus]\nused in the [Teensy LC][teensylc]. \n\nThis is interesting, because I've been reading up on how to build a custom\nkeyboard. (You know, as one does.) In the course of that, I've been\nacquainting myself with the [Teensy line of USB development boards][teensy].\n\nLately, I've been playing with the [Teensy 2.0][teensy20]. That seems to be\npopular in the DIY community for how easy it makes implementing \nUSB devices.  Granted, that's a different microcontroller (an [Atmel\nATmega32u4][ATmega32u4]), but I'm hoping that general experience with things like the\nTeensy family of dev boards can eventually translate to some personal fun and\nsome community firmware to explore the potential of the [Steam Controller][].\n\nAs it is, someone's already figured out how to [play music through the haptic\nactuators][hapticmusic] and they released the [source\ncode][hapticmusicsource].  That's more a function of decoding the \nprotocol from PC to Controller than messing around with the microcontrollers,\nbut it's still pretty cool.\n\nIt would be great if Valve released more docs & code around this thing. I\ncan understand that there might be some pressure to keep the Steam hardware &\nsoftware ecosystem cohesive. But, for a weird little device like this, I\nimagine they'd only get more sales by fully opening everything up and letting\nthe tinkering world pave the way for more uses - and maybe fix a few bugs for\nthem as clever folks scratch their own itches.\n\n[ATmega32u4]: http://www.atmel.com/devices/atmega32u4.aspx\n[schackable]: http://hackaday.com/2013/10/01/steam-controller-open-and-hackable/\n[teensylc]: https://www.pjrc.com/store/teensylc.html\n[teensy]: https://www.pjrc.com/teensy/\n[teensy20]: https://www.pjrc.com/store/teensy.html\n[teardown]: https://www.ifixit.com/Teardown/Steam+Controller+Teardown/52578\n[cortex-m0-plus]: http://www.arm.com/products/processors/cortex-m/cortex-m0plus.php\n[cortex-m0]: http://www.arm.com/products/processors/cortex-m/cortex-m0.php\n\n[reddit-chips]: https://www.reddit.com/r/SteamControllerMods/comments/3p6d26/some_details_on_the_chips_in_the_controller_and/\n\n[hapticmusic]: https://steamcommunity.com/app/353370/discussions/0/494632506573267894/\n[hapticmusicsource]: https://gitlab.com/Pilatomic/SteamControllerSinger\n\n## Conclusion\n\nThe [Steam Controller][] is an odd little duck. It's a bit awkward to hold\nand the software is not great. But, software can be fixed and the controls &\nsensors onboard have so much great potential for PC gaming. \n\nThis is clearly not a mature, finished product - which is disappointing,\nbecause I paid money for it - but I'm really rooting for it. And I've already\nused it for dozens of hours in games, so it's obviously worked for me in many\ncapacities. I'm really hoping that Valve follows through on their promises to\nopen things up for tinkering - because it might be the thing that ultimately\nredeems the whole project.\n\n\n<!-- vim: set wrap wm=5 syntax=markdown textwidth=78: -->\n",
  "parentPath": "./content/posts/archives/2016",
  "path": "2016/02/05/steam-controller",
  "thumbnail": "/uploads/2016/steam-controller/sc-top.jpg",
  "summary": "TL;DR: The Steam Controller is an odd little duck. But, I'm rooting\nfor it.",
  "needsBuild": true,
  "prevPostPath": "2015/10/28/catbearcoin",
  "prevPostTitle": "Catbearcoin, a web science fiction story",
  "nextPostPath": "2016/02/06/keyboard-hacking",
  "nextPostTitle": "Keyboard hacking seems like fun"
}