Sunday, July 31, 2016

What I have loaded my HTPC with, part 2

It did not take so long, but I was waiting for some stuff to happen and now I can write this post.

What have I loaded my HTPC with? Well, the correct question now is, what did I replace my HTPC with.

I've experimented with the concept of the HTPC for some time and found that, while it's the most powerful device for media and gaming, it's also the clumsiest. You'll need a keyboard and mouse sooner or later, and Windows simply isn't tailored to navigation with a controller. The app Controller Companion, available on Steam for a couple bucks, greatly alleviates this problem, but it's still no console, not Android box, nor Kodi box. And things tend to go wrong on Windows quite often.

Then I saw that the Raspberry Pi foundation launched the Raspberry Pi 3 and, realizing that it now had become powerful enough to do what I wanted from it, I simply couldn't pass the deal and dumped the HTPC entirely. The Pi is effectively a very small HTPC at much lower cost.

Thus, this post will be about what I have loaded my Pi with!!!

My RPi3 can presently run emulators (the RPi3 is probably powerful enough to run N64 games but I haven't tested), stream media from my Emby Windows server, and stream games from the server using Moonlight. It's really a do-it-all little piece of hardware, and its UIs are fully controllable with an Xbox One controller.

The list of things I did:

1) The OS:

You'll want the latest RetroPie image. RetroPie is basically a Raspbian distro packaged with emulation-specific software, mainly RetroArch (which comes with the libretro cores) and EmulationStation (an emulation frontend). It can also run (and boot into) Kodi. Easy Kodi support was what drew me into RetroPie, though Recalbox and Lakka are viable alternatives if you want to emulate.

I've tried OSMC, OpenELEC and LibreELEC, but all three lack controller support for the Kodi UI. It was also a pain to configure my controllers in OSMC and, when xboxdrv decided to work, the D-Pad axis and some buttons were reversed. OSMC does have a Kodi plugin called Luna, though, which you can stream games with, but it's not as reliable as I'd want it to.

2) Kodi support:

The Kodi support in RetroPie is currently experimental, but when enabled via the RetroPie Setup script, it's added to the "Ports" submenu in EmulationStation and runs quite reliably. Anyone used to smooth navigation on Windows like me will miss the speed, as the Pi has some hiccups, especially when loading many images at once. The skin I use is Amber, which is very lightweight and looks pretty. It looks a bit similar to Aeon Nox, except the fonts are a lot easier on the eye. There are also color mods for it, if you don't like the standard Amber. 

Don't expect to run heavy skins like Aeon MQ or Titan on a Pi (even the RPi3).

To stream my media library I use the Emby for Kodi addon, as I have set up an Emby server in my Windows 10 gaming machine. After configuring my shares I was able to get a clean experience. The plugin downloads missing subtitles in my language and points which of them are synced with my video file, a huge plus.

3) The Xbox One controller:

I control everything in RetroPie via my Xbox One controller, but its correct setup was not easy. The xpad driver for Linux does currently support Xbox One controllers, but, for some reason, it didn't work out of the box in my RetroPie.

The solution is in this link, by users afreeorange and ksj01. Basically, you'll have to download the latest version of the xpad driver, but there are some hurdles to overcome. xboxdrv recognizes the controller but doesn't seem to recognize any inputs. xpad will, however, work.

4) Moonlight:

The ace in my configuration is definitely Moonlight. It was also the most difficult to configure because Moonlight is not native to RetroPie, which is bundled with the older Limelight streaming app. User Haris1977 posted a tutorial on Github on how to install moonlight-embedded on RetroPie and have it properly configured. I went ahead and, instead of making just one script to launch Moonlight, I made several, to acknowledge the most commonly used streaming options. 

What moonlight-embedded will do is launch Steam Big Picture Mode in your server and stream the server's screen to the Pi's screen, so, although I didn't test it, it should be technically possible to stream all games you have on Steam to the Pi, even those that are not in the Nvidia GameStream's list on your server. This could open up many possibilities since you can possibly use Ice to add heavy emulators like Dolphin and PCSX2 to Steam on the server and stream the emulated games to the Pi. This way, the Pi has access to every system, although not in the main EmulationStation menu.

Moonlight only works if the host has an Nvidia GPU.

5) Some Linux knowledge:

It's been almost a week since I've been tinkering with the distros that I've tried and I could not recommend this enough: don't break Debian! It applies to every distro, really, but since Raspbian is the most popular distro on the Pi, it's especially relevant in this case. The "FrankenDebian" topic is of particular interest. It means you're adding things to Debian that are specific to other distros and will not necessarily run on Debian and could break your Debian-based system. One such example are PPAs, which are packages compiled and distributed for Ubuntu and may or may not run on Debian with the necessary packages, and could break Debian.

Resisting the temptation is difficult because Debian is built around the idea of supplying only absolutely stable packages, which for that reason could be outdated, but Linux's level of user control is both its blessing and its curse. Add enough crap to your system without knowing what you're doing and you could end up with a mess that only a complete reinstall will fix.

To interact with RetroPie's underpinnings, you can either quit EmulationStation (but not shutdown or reboot) or SSH into it. The easiest way to use SSH on Windows is via the Putty software. It can be fun to tinker with it, but for the average user there's not much that needs to be done via CLI that couldn't be done via the RetroPie Setup script, as the script, when started from the EmulationStation menu, is controller-friendly despite looking like an old DOS interface.

Friday, July 1, 2016

What I have loaded my HTPC with, part 1

In the meantime between the last post back in March and today, I've been experimenting with different HTPC setups and I can say I've come up with a solution that serves me well, at least until I'm bitten by the modification bug once again.

Let me start with the fact that I use my HTPC primarily for gaming, with all the bonuses and complications that arise from it. Windows 10 is my primary OS.

So, why don't you have an Xbox One instead?, someone would ask. For a few reasons:

1) The Xbox One cannot, and probably will never be a streaming client to a gaming desktop. Microsoft needs to justify people investing in an Xbox instead of an HTPC. The reverse is possible, but I'm not interested in the reverse, especially when Microsoft is attempting to port its major Xbox One releases to the new UWP app standard introduced with Windows 10.

2) The PC has three major advantages over console: modding, graphic quality and backwards compatibility. On an OS as new as Windows 10, I can play even games from the DOS era without many issues. I also have the benefit of easy modification of the files to suit my needs as well as a level of graphic quality not possible in a console. Meanwhile, the three major console manufacturers are opening themselves to backwards compatibility, but at a price... A steep one, if I may. For example, the remaster of the Batman Arkham games planned to current gen consoles, "Return to Arkham", which will cost $49.99,
simply does not look as good as the max graphics on PC. These are games that can be had for cheap nowadays on Steam, but you cannot play them in either the Xbox One or the PS4 except for paying extra for a remaster that still doesn't look as great as the more accessible PC version. You can play Arkham Asylum on PC with an Xbox One (or even Xbox 360) controller as well as pretty acceptable WASD setup on keyboard.

3) Consequently, as I choose to game on the PC platform and my HTPC is not suited to high end gaming, I must use a streaming solution to have my games available in my living room at greater quality. Steam In-Home Streaming offers me just that, and, through a wired network connection, the latency is minimal. There are a few drawbacks to this approach, namely the dodgy compatibility with Nvidia's Dynamic Super Resolution feature, but I can easily play my FPS and RTS games on my desktop and move to the living room when I want to play fighting or third person sandbox games.

4) The Xbox One does not have a Kodi client available. At the moment, I believe Kodi to be a superior media center to its competitors, which are in no way badly written software, but Kodi does offer a level of customization that hasn't yet been attained by Emby Theater, for example. Perhaps this will change one day, but for now I find Kodi the superior alternative.

5) An HTPC setup allows me to emulate many different retro consoles, something not yet possible in current gen consoles such as the PS4.

In the next post I will show the software I use and give directions on possible setup alternatives. Stay tuned, and hopefully it won't take four months to return. :)