~hristoast/hristoast

hristoast/site/a-retroconsole-with-lakka.html -rw-r--r-- 10.2 KiB
6c725186Hristos N. Triantafillou A better name for that 16 hours ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<h1 id="title">A Retroconsole With Lakka</h1>

<div id="dates">
  <span>Posted: <time id="post-date">2020-07-01</time></span>
</div>

<p id="post-excerpt">
  Having grown up with what are now considered "classic" or "retro" game consoles, as an adult that enjoys video games I find myself in particular still facsinated by these older platforms.  Maybe it's because I grew up with them, or maybe it's because of an overall preference, but something keeps pulling me back to the classics.  Join me as I discuss setting up a "retroconsole" with modern hardware and FOSS!
</p>

<div id="toc"></div>

<h3>What's A Retroconsole?</h3>

<p>
  A "retroconsole" may qualify as any hardware that's dedicated (or mostly dedicated) to emulating or running "retro" games and software.  These days, game-makers are even producing official retroconsoles that you can simply plug in and play, offering close to the same experience as the older, original incarnations.  Some examples are the <a href="https://en.wikipedia.org/wiki/NES_Classic_Edition">NES Classic Edition</a>, <a href="https://en.wikipedia.org/wiki/Super_NES_Classic_Edition">Super NES Classic Edition</a>, <a href="https://en.wikipedia.org/wiki/PlayStation_Classic">PlayStation Classic</a>, and the <a href="https://en.wikipedia.org/wiki/Sega_Genesis_Mini">Sega Genesis Mini</a>.
</p>

<p>
  The commercial offerings are fine if you're not interested in tinkering, though it's interesting to note that many of them are confirmed to run free software either in the form of the emulators they use or the OS that they run. <span class="footnote"><a href="https://arstechnica.com/gaming/2018/11/sony-using-open-source-emulator-for-playstation-classic-plug-and-play/">Sony using open source emulator for PlayStation Classic plug-and-play, Ars Technica: Kyle Orland - 11/9/2018</a></span> <span class="footnote"><a href="https://www.omgubuntu.co.uk/2016/11/nintendo-nes-classic-single-board-pc-linux">Nintendo’s $60 NES Classic Runs Linux, OMG! Ubuntu: Joey Sneddon - 7 November 2016</a></span>
</p>

<p>
  But what if you don't mind a bit of tinkering- or if you specifically crave the process?  Don't worry, you aren't alone!
</p>

<h3>DIY</h3>

<p>
  There's a vibrant community around DIY retroconsoles, including several choices for Linux-based operating systems that are preloaded with various emulators and other features.  I'll be looking specifically at two of the more popular options: <a href="https://retropie.org.uk/">RetroPie</a> and <a href="http://www.lakka.tv/">Lakka</a>.  But there are other options out there, I just don't have a lot of experience with using them at this time.
</p>

<h3>RetroPie</h3>

<p>
  About three or four years ago I purchased my first Raspberry Pi; version 3 model B of the hardware to be specific.  I can't recall how I came across RetroPie, but it was the first retroconsole OS I tried out.
</p>

<p>
  Overall, RetroPie is an extremely polished experience that is very easy to just jump into and use.  By and large, things work the way you expect them to, and it's reasonably simple to figure out most things just by using it and exploring the UI.  I still run RetroPie on two Raspberry Pi 3 model Bs, and it's really great.
</p>

<p>
  <!-- This time, however, since I'm using a Raspberry Pi 4 model B and there is no official build for this yet, I have to skip RetroPie and try something else. -->
  When I first wrote this some time back in April, there was not yet a build for the Raspberry Pi 4 - however now there is.  As of this writing I've yet to try it, though.  The reason I didn't jump on it?  Well I've been pretty happy with Lakka, so without further ado!
</p>

<h3>Lakka</h3>

<p>
  As it turns out, Lakka already had an installer for the Raspberry Pi 4 even back when Retropie did not.  Once I realized this I decided to give it a try.  Although both could be considered "retroconsole OSes", Lakka and RetroPie are quite different experiences.
</p>

<h4>The Good</h4>

<p>
  Starting with the things I really like: Lakka is clearly a curated experience.  Emulators/cores are baked into the release, and there's no option to manually update things.  Some might see this as a bad thing, but from my perspective it allows for a level of stability that can be lost when one starts tinkering around with things.
</p>

<p>
  Lakka itself doesn't have a UI outside of the Retroarch UI;  despite the fact that the Retroarch UI itself has a bit of a learning curve, I actually like this setup.  Pretty much everything you need to do can be done from here and it works well.  Contrast to RetroPie which has a myriad of UIs that are stitched together <span class="footnote">Don't get me wrong, the execution is great but having several UIs can sometimes be painful in unexpected ways.  I also find it nice to have less of Retroarch itself abstracted from me.</span> Lakka may be a welcome breath of uniformity.
</p>

<h4>The Bad: Part 1</h4>

<p>
  Lakka, like many other powerful pieces of software, has a bit of a learning curve.  A novice user that simply turns it on and tries to work things out may very well have a bit of a bad time.  This is especially true for folks that can't or don't normally read documentation for things.  It didn't take me long to find people complaining on the Lakka forums about how "complicated" it is, but as far as I could tell most if not all complaints could be resolved by reading the documentation.
</p>

<p>
  As a personal anecdote: I was able to find everything I needed to get started in the project documentation.  To me, this whole point isn't actually a "bad thing" but I could see it being tough to overcome for others.  Aside from making it clear that folks should take some time to read the documentation, I'm not sure what other approach could be taken to remedy this situation.  In any case, I wanted to mention this first as it does affect some folks.
</p>

<h4>The Bad: Part 2</h4>

<p>
  As a hobbyist tinkerer, I prefer to control my systems down to the small details.  I want to configure the system and services in very specific ways, and I've got a collection of Ansible roles to do this for me.  But with Lakka, the system is distributed as a <a href="https://en.wikipedia.org/wiki/SquashFS">SquashFS</a> which means that after the system boots, a good portion of what's under <code>/</code> is read-only.
</p>

<p>
  At first, this irritated me.  I need to change the SSH configuration, and other things.. what gives?  Once I took a step back and realized the overall vision for Lakka is more of a very specific plug-and-play experience, and that the SquashFS pattern certainly has advantages and benefits, I learned to live with it.  And today, as I write this piece, I can say I'm okay with it and even perhaps that I love it.
</p>

<p>
  Another point that was sort of a pain was the fact that Lakka is effectively hardcoded to recognize specific ROMs that are known to be good.  The result of this was the majority of my existing ROM collection wouldn't be read by Lakka's generated playlists.  Even if you have the ROMs recognized by Lakka's database, things like ROM hacks will likely never be listed since they aren "known good" verification hashes.  In the end, I've resorted to making my own playlists that contain ROM hacks and the specific games I might play.
</p>

<h4>The Ugly</h4>

<p>
  I myself don't really have anything bad to say about Lakka.  But there are some rather ugly aspects to the user experience.  The main thing that I think is kind of ugly is the process for pairing bluetooth devices.
</p>

<p>
  To be clear: this isn't specifically a Lakka problem but rather one with Retroarch and its UI; there's currently no graphical interface for working with bluetooth.  Instead, one has to:
</p>

<ol>
  <li>Enable SSH</li>
  <li>SSH into the machine running Lakka</li>
  <li>Run <code>bluetoothctl</code></li>
  <li>Issue several commands to scan for and pair your device</li>
  <li>Disable SSH </li>
</ol>

<p>
  I used the <a href="http://www.lakka.tv/doc/8Bitdo-Wireless-Controller/">8Bitdo Wireless Controller</a> and <a href="http://www.lakka.tv/doc/Wireless-Dualshock/">Wireless Dualshock</a> documentation as a reference for getting all of this working.  It's not really ideal, but in the end it does work and in theory one isn't going to be pairing controllers all the time.  Still, if SSH and command-line work isn't something you are comfortable with, this can be quite the task.
</p>

<h4>The Rest</h4>

<p>
  There are a few things I can't file under "good", "bad", or "ugly" because I'm not yet quite sure about them.  This includes:
</p>

<ul>
  <li>Despite having set controller-specific input mappings, my 8bitdo SFC replica controllers have reversed buttons (my "default" controller is a PS4 gamepad).  My instinct is I've done something wrong, and to be honest I've just been using the PS4 controller.</li>
  <li>Unlike RetroPie, for instance, there doesn't seem to be a way to have controller-specific mappings for things like bringing up the Retroarch menu.  Right now I've got it mapped to the PS4 controllers "PS" button, but if I were to try and use my SNES replica controllers there would be no binding for it and thus, no way to access the menu.  Again, it feels like I'm simply missing something here.</li>
  <li>Another controller-related issue: again despite having controller-specific input mapping, if I map the left analog stick of my PS4 controller to the dpad and disable this for my N64 replica controller, the N64 controller still acts like the analog to dpad map is still enabled.  This manifests itself in games like GoldenEye with the player looking down as you move forward (with the default control scheme).  As with the other things, I get the feeling like I'm missing something and unfortunately there's no specific mention of this in the Lakka documentation.</li>
</ul>

<h3>Conclusion</h3>

<p>
  In conclusion: after some time, even in the face of Retropie releasing for the Raspberry Pi 4, I'm really happy with Lakka.  I don't see myself moving to Retropie anytime soon, even though I'm sure that's an excellent experience as well.
</p>

<p>
  I don't find myself playing retro games all the time, but when I do I'm very glad to have a slick setup as I've got with Lakka.  Big thanks to the Lakka team!
</p>

<h3>Footnotes And References</h3>

<div id="footnotes"></div>