tag:blogger.com,1999:blog-74315952160083597432024-03-19T04:22:57.221+01:00The tales of neagixgeeky adventures in a digital mechanical worldNeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.comBlogger37125tag:blogger.com,1999:blog-7431595216008359743.post-55142472130082388692014-09-27T23:24:00.006+02:002015-02-15T12:12:55.864+01:00Ubuntu 14 & OpenPGP smartcards: report from the war zone<br />
Using <a href="https://wiki.debian.org/Smartcards/OpenPGP" target="_blank">smartcards</a> on Ubuntu 14 is not <a href="https://www.youtube.com/watch?v=yHxj-47csUU" target="_blank">a plug&play experience</a> these days; not that it has ever been, and given the whimsically small amount of users this is to be expected.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7dd6Ul_Jz-HBdA4TsDF6eNcb2UKouadCgKLh4mPe3ircBlXPCg7cvg86T3SnhPMdSgdv3-L8lZu8HE0qPYAC743EHaBVZ2grYLXne_LNAthRqX8_fPl8210jj028gGyIql0On6888hbKv/s1600/Crypto_Barn.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7dd6Ul_Jz-HBdA4TsDF6eNcb2UKouadCgKLh4mPe3ircBlXPCg7cvg86T3SnhPMdSgdv3-L8lZu8HE0qPYAC743EHaBVZ2grYLXne_LNAthRqX8_fPl8210jj028gGyIql0On6888hbKv/s1600/Crypto_Barn.png" height="243" width="320" /></a></div>
<br />
This post/tutorial is split into different sections to ease readability and evidence <b>ALL</b> the different problems you will have to overcome to achieve a working setup.<br />
<h2>
Goal</h2>
<br />
The goal is to have a working gpg-agent integration that will provide signing/encryption for all your X11/terminal session applications, and that will act also as an SSH agent (the <i>key</i> feature here is gpg-agent's <i>--enable-ssh-support</i>).<br />
<br />
Use-case examples:<br />
<ul>
<li>Thunderbird + Enigmail</li>
<li>remote SSH authentication</li>
<li>X2Go sessions</li>
<li>any other use of gpg you can think of</li>
</ul>
In order to achieve this, we must be in control of how gpg-agent is started and make sure that no other agent is being started (most notably: gnome-keyring, ssh-agent, other rogue gpg-agent instances, you-name-it keyring). <br />
<ul>
</ul>
Enjoy reading & hacking through this :)<br />
<h2>
1. First steps first: the reader</h2>
<br />
Let's install the necessary software:<br />
<blockquote class="tr_bq">
<br />
<span style="font-family: "Courier New",Courier,monospace;">apt-get install pcscd gnupg2</span></blockquote>
<br />
I had some issues at getting the reader recognized and available to my non-root user. I will skip instructions about to configure <i>udev</i>, as it is already described in the <a href="https://wiki.fsfe.org/Card_howtos/Card_reader_setup_%28udev%29" target="_blank">Howtos at FSFE</a> and online everywhere; basically you have to produce correct rules for your device, and then a script that will be executed every time your device is plugged in. I suggest <a href="http://wiki.gentoo.org/wiki/Udev#Rules" target="_blank">Gentoo's well-written udev wiki page</a> as a start.<br />
<br />
<b>NOTE:</b> you should change the ids in the udev rules to match those you can see in your <i>dmesg</i>. <br />
<br />
When you have successfully configured your device via <i>udev</i>, you will be able to query the smartcard like this:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">$ gpg --card-status<br />Application ID ...: **************<br />Version ..........: 2.0<br />Manufacturer .....: ************<br />Serial number ....: ************<br />Name of cardholder: [not set]<br />Language prefs ...: de<br />Sex ..............: unspecified<br />URL of public key : [not set]<br />Login data .......: [not set]<br />Private DO 1 .....: [not set]<br />Private DO 2 .....: [not set]<br />Signature PIN ....: forced<br />Key attributes ...: 2048R 2048R 2048R<br />Max. PIN lengths .: 32 32 32<br />PIN retry counter : 3 0 3<br />Signature counter : 0<br />Signature key ....: [none]<br />Encryption key....: [none]<br />Authentication key: [none]</span></blockquote>
<br />
This looks good! :)<br />
<br />
If you have gone this far, congratulations! You're ready to fix the next mess...<br />
<br />
<h3>
You're feeling lucky</h3>
Your reader might be CCID-capable but <b>not</b> on the <a href="https://pcsclite.alioth.debian.org/ccid/supported.html" target="_blank">supported</a>/<a href="https://pcsclite.alioth.debian.org/ccid/shouldwork.html" target="_blank">should work</a> lists; if you want to test if it works with pcscd you can manually add the name and ids (same as above step for udev rules) to:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist</span><br />
<br />
This way pcscd will at least attempt to talk to the device; remember to <a href="https://pcsclite.alioth.debian.org/ccid.html#CCID_compliant" target="_blank">contact pcscd author</a> if it works and you would like to see this device added to those that are officially supported.<br />
<h2>
2. Broken systems are broken</h2>
There <a href="https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/1387303" target="_blank">are</a> <a href="https://bugs.launchpad.net/ubuntu/+source/gnupg2/+bug/1257706" target="_blank">bugs</a> in <a href="https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/884856" target="_blank">Ubuntu</a>/<a href="https://bugzilla.gnome.org/show_bug.cgi?id=644415" target="_blank">Gnome keyring</a> that by default will make the GPG integration broken; derivatives like Mint are also affected.<br />
<br />
This issue can be fixed by <strike>removing the damn Ubuntu-installed files and burning them with fire</strike> disabling GNOME keyring (at least until it's fixed/completed) with:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">sudo rm /etc/xdg/</span><wbr></wbr><span style="font-family: "Courier New",Courier,monospace;">autostart/</span><wbr></wbr><span style="font-family: "Courier New",Courier,monospace;">gnome-keyring-</span><wbr></wbr><span style="font-family: "Courier New",Courier,monospace;">gpg.desktop</span> </blockquote>
<br />
In XFCE settings, in Session & Autostart the "Start Gnome services at startup" option should be disabled as well.<br />
<br />
Disable the other 2 totally rogue gpg-agent and ssh-agent upstart services:<code> </code><br />
<blockquote class="tr_bq">
<code>echo manual | sudo tee /etc/init/gpg-agent.override</code><br />
<pre><code>echo manual | sudo tee /etc/init/ssh-agent.override</code></pre>
</blockquote>
<br />
Finally, disable the Xsession.d scripts that would normally auto-start ssh-agent:<br />
<br />
<blockquote class="tr_bq">
<code>sudo rm /etc/X11/Xsession.d/<code>90ssh-agent</code></code></blockquote>
<br />
Depending on the desktop environment of your choice, there are countless other ways to autostart applications. Read their documentation and Make sure that no keyrings/agents are being automagically started.<br />
<br />
<h3>
XFCE, good boy</h3>
<br />
As per <a href="http://docs.xfce.org/xfce/xfce4-session/advanced" target="_blank">XFCE4 documentation</a>, disable both gpg-agent and ssh-agent from being auto-started by xfce4-session:<br />
<br />
<blockquote class="tr_bq">
<pre class="code">xfconf-query -c xfce4-session -p /startup/gpg-agent/enabled -n -t bool -s false</pre>
<pre class="code">xfconf-query -c xfce4-session -p /startup/ssh-agent/enabled -n -t bool -s false </pre>
</blockquote>
<br />
<br />
If no ssh-agent (and only 1 gpg-agent) is running at any time when you login to a new X session, then feel free to proceed to next step :)<br />
<h3>
Useless rant</h3>
<blockquote class="tr_bq">
Enabling autostart applications in any Linux desktop environment and not providing any easy GUI/CLI to change them is equivalent to producing an unmaintainable/unusable pile of hacks, but this is the average Linux desktop experience and we all know it by now :) </blockquote>
<h3>
For hardcore users</h3>
If you are experiencing issues at individuating who is responsible of the startup of some gpg-agent, I suggest this radical approach:<br />
<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">sudo dpkg-divert --divert /usr/bin/gpg-agent.real --rename /usr/bin/gpg-agent</span></blockquote>
<br />
It's left to the reader as an exercise to create a gpg-agent script that will save the output of <i>pstree</i> somewhere, so that you can figure out what's going on :) <br />
<br />
Remember to revert your change or use the correct binary name later on if you have applied this diversion. <br />
<h2>
3. Session mayhem</h2>
<br />
Modern login managers will ignore your ~.Xsession/~.xsession file; instructions here cover only LightDM/XFCE4, but suffice it to say that being able to start your X sessions via an .xsession file is enough to complete this integration setup.<br />
<br />
Create <i>/usr/share/xsessions/xsession.desktop</i>:<br />
<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">[Desktop Entry]<br />Name=Xsession<br />Exec=/etc/X11/Xsession</span></blockquote>
<br />
<br />
Make it the default session in LightDM via <i>/etc/lightdm/lightdm.conf</i>:<br />
<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">[SeatDefaults]<br />user-session=Xsession</span> </blockquote>
<br />
Create your <i>~/.xsession</i>:<br />
<br />
<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">exec ck-launch-session dbus-launch --exit-with-session startxfce4</span></blockquote>
<br />
Restart lightdm (or the whole system, since not all processes will terminate with your session) and check that everything works as expected. If you cannot mount external devices, make sure you have <i>policykit-desktop-privileges</i> installed (go look here for <a href="https://bugs.launchpad.net/ubuntu/+source/lubuntu-meta/+bug/1250985" target="_blank">another delicious bug</a> about this).<br />
<br />
Once you made yourself comfortable and everything is working as expected, we're ready to add the final chef touch to our setup.<br />
<h2>
4. Please wrap it </h2>
<br />
We are going to make sure that <i>gpg-agent</i> is a STARTUP prefix for our beloved X session, so that <i>gpg-agent</i> will correctly setup a bunch of other environment variables.<br />
<br />
For reference, this is their list:<br />
<ul>
<li><span style="font-family: "Courier New",Courier,monospace;">GPG_AGENT_INFO=/home/neagix/.gnupg/S.gpg-agent:17244:1</span></li>
<span style="font-family: "Courier New",Courier,monospace;">
</span>
<li><span style="font-family: "Courier New",Courier,monospace;">SSH_AUTH_SOCK=/home/neagix/.gnupg/S.gpg-agent.ssh</span></li>
<span style="font-family: "Courier New",Courier,monospace;">
</span>
<li><span style="font-family: "Courier New",Courier,monospace;">SSH_AGENT_PID=17244</span></li>
<span style="font-family: "Courier New",Courier,monospace;">
</span><span style="font-family: "Courier New",Courier,monospace;">
</span></ul>
<span style="font-family: "Courier New",Courier,monospace;"></span><br />
Open your ~/.gnupg/gpg.conf and make sure that you have:<br />
<blockquote class="tr_bq">
<br />
<span style="font-family: "Courier New",Courier,monospace;">enable-ssh-support</span><br />
<span style="font-family: "Courier New",Courier,monospace;">use-standard-socket </span></blockquote>
<br />
At this point, reboot (or restart lightdm) and check that your setup worked by typing in any terminal emulator:<br />
<blockquote class="tr_bq">
<br />
<span style="font-family: "Courier New",Courier,monospace;">set | grep 'GPG\|SSH'</span></blockquote>
<br />
If you don't see the expected 3 environment variables, either you did something wrong or the distro gods have changed something (yes, this post will eventually become old as this mess is cleaned up & fixed upstream).<br />
<br />
You can test that the correct gpg-agent is running by inspecting the command line:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">xargs -0 < /proc/$(pgrep gpg-agent)/cmdline </span></blockquote>
Remember that options are read by default from ~/.gnupg/gpg-agent.conf.<br />
<br />
And finally, enjoy your correctly-working gpg smartcard setup! <br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDGm-Ls8Z3-t7NghVrVYoIif4Rg_0scCVcrHGL1seVFsg7K7qNiRYsSqoe8k-wZr-5ExMfRWgP9JvGgSs65drBXjvKsPl2kUtVwrBGVdAsgpICTwiObGRU2xgmx0UuBrs-VdCSYRhtMMjN/s1600/homer-simpson-donut.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDGm-Ls8Z3-t7NghVrVYoIif4Rg_0scCVcrHGL1seVFsg7K7qNiRYsSqoe8k-wZr-5ExMfRWgP9JvGgSs65drBXjvKsPl2kUtVwrBGVdAsgpICTwiObGRU2xgmx0UuBrs-VdCSYRhtMMjN/s1600/homer-simpson-donut.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">37 hours is the estimated amount of time that an average Ubuntu user would need to correctly complete this setup from scratch, nonetheless with the help of search engines. Hope this walk-through was of some help :)</td></tr>
</tbody></table>
<br />
<b>Update 24 January 2015:</b> gnupg2 package is in extra, not main. Thus one cannot expect it to be perfectly working.NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-28152181824468090252014-09-06T19:58:00.004+02:002014-10-26T18:19:43.608+01:00Linux Mint 17: install troubles<div class="separator" style="clear: both; text-align: center;">
</div>
I have been reading a lot about Linux Mint in recent weeks, and today I decided to install it, in particular the <i>Cinnamon</i> variant.<br />
<h3>
Installation fireworks</h3>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6x6VYXrcnuZQydkHEDnPsU2LpnxJUzjlZqLUBlVN_JnPtpUJWVnq65BDezLI9lblLbP8bzQibqVM9IlaCQO__lehIjMCLJfAxjpl2OQkzoNlxuTnYRlbRKmeQiKzOsmTyEoz2CXlxGSVv/s1600/lm17cinnamon.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6x6VYXrcnuZQydkHEDnPsU2LpnxJUzjlZqLUBlVN_JnPtpUJWVnq65BDezLI9lblLbP8bzQibqVM9IlaCQO__lehIjMCLJfAxjpl2OQkzoNlxuTnYRlbRKmeQiKzOsmTyEoz2CXlxGSVv/s1600/lm17cinnamon.png" height="233" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">LM = Linux Mint, got it!</td></tr>
</tbody></table>
<br />
I downloaded the ISO and <a href="https://en.wikipedia.org/wiki/Dd_%28Unix%29" target="_blank">dd</a>'umped it into an USB stick; once booted this Live Linux Mint, you can click on the Install icon on desktop to start the famous <a href="https://wiki.ubuntu.com/Ubiquity" target="_blank">Ubiquity</a> installation wizard (of <a href="http://www.ubuntu.com/" target="_blank">Ubuntu</a> fame).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjj-r0LMewgb1Hz472DvBvz5czSO5vWkbh_KfkFEYpfEJxg7cURpv7wHcFJg9AcdoIOdUFQQo951Vsdp0EJLwihB1BvpJihJRhf87HZaAIV4NiTfJK1Vy47w3-m9p6xSwh5H0iNf88S9Ya/s1600/Linux-Mint-Installation-2.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjj-r0LMewgb1Hz472DvBvz5czSO5vWkbh_KfkFEYpfEJxg7cURpv7wHcFJg9AcdoIOdUFQQo951Vsdp0EJLwihB1BvpJihJRhf87HZaAIV4NiTfJK1Vy47w3-m9p6xSwh5H0iNf88S9Ya/s1600/Linux-Mint-Installation-2.jpeg" height="230" width="320" /></a></div>
<br />
This wizard comes with the strong and weak spots of the Ubuntu one, except that it does not offer an option to download most recent packages directly (maybe for better stability). <br />
<br />
First issue: you cannot install on devices under <i>/dev/mapper</i>, thus you cannot directly use anything like <a href="https://code.google.com/p/cryptsetup/" target="_blank">LUKS</a>.<br />
<br />
Second issue: it does not allow to select "no bootloader" (I want to customize my existing GRUB and not install a new one); if you try to trick the installer by selecting the USB stick used for the Live distro, then it will fail writing there and ask you if you prefer to continue without bootloader. Bingo you say? No, it will crash afterwards (or after installation is complete).<br />
So I had to apply <a href="https://gist.github.com/neagix/d26f5683784c9b4051dc#file-ubiquity-disable-grub-diff" target="_blank">this patch</a> to correctly continue installation (<b>NOTE:</b> this is a problem common to Ubuntu 14.04 and Linux Mint 17).<br />
<br />
Afterwards installation proceeds smoothly and then finally the wizard says it completed and asks if you want to continue testing or reboot. Choosing to continue testing inevitably leads to a short hourglass waiting time and then the announcement that the installation wizard <i>crashed</i> (as happened before with the GRUB problem), thus I advise to not click anything and leave the dialog there; once completed using the Live distro, then press the restart button.<br />
<h3>
Boot attempt 1</h3>
So, right after installation I added a stanza to my already-existing GRUB to boot Linux Mint, and here the first problem comes:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioqPAqxnq_pnkPfkBoUwJpCTe3EpsXChZ3055H6DeknvcRx8w2-dHzu447R5nSUaYdQC0FJJbn10YhCIPnDAYpwr1ROJ5LuPU_AisN51TCqiYnPqqEPLCwzt1xTmR_2DcCur-bd4fDCbD2/s1600/linux+mint+kernel+panic.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioqPAqxnq_pnkPfkBoUwJpCTe3EpsXChZ3055H6DeknvcRx8w2-dHzu447R5nSUaYdQC0FJJbn10YhCIPnDAYpwr1ROJ5LuPU_AisN51TCqiYnPqqEPLCwzt1xTmR_2DcCur-bd4fDCbD2/s1600/linux+mint+kernel+panic.png" height="187" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Kernel panic in <b>native_smp_send_reschedule</b> (???)</td></tr>
</tbody></table>
I dare anybody to tell what this kernel panic is about. After a few attempts, I figured out that the <i>root=</i> kernel command line parameter was wrong, but one would expect a radically different message in such case (not a kernel panic in <b>native_smp_send_reschedule</b>).<br />
<br />
<h3>
Boot attempt 2 </h3>
After having fixed this <i>trivial</i> problem, Linux Mint <i>seems</i> to boot...except that it doesn't.<br />
<br />
The boot process gets stuck and I figured out thanks to <a href="http://forums.linuxmint.com/viewtopic.php?f=46&t=117699" rel="nofollow" target="_blank">this forum thread</a> that it's because of some invalid fake <i>start-stop-daemon</i> and <i>fake initctl</i>.<br />
<br />
This was a good time to meter the quality of the community, testing, bug tracking/fixing of the FOSS project, so I went to check the bug tracker:<br />
<blockquote class="tr_bq">
<a href="https://bugs.launchpad.net/linuxmint/+bug/1096570">https://bugs.launchpad.net/linuxmint/+bug/1096570</a> </blockquote>
<br />
The forum thread is dated <i><b>Fri Nov 23, 2012 4:27 pm</b></i> and the bug<span title="2013-01-06 11:35:59 UTC"> <i><b>2013-01-06</b></i>. And today it's <i><b>6 September 2014</b></i>.</span><br />
<br />
Perhaps a regression and previous versions of Linux Mint worked perfectly?<br />
Nonetheless this situation sucks.<br />
<br />
<h3>
Band-aid & first healthy boot</h3>
Ubiquity already mounts the new system in /target, so I proceeded to mount there the usual <b>proc</b>, <b>sys</b> and <b>dev</b>, then <i>chroot</i> in it to reinstall dpkg and upstart:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">apt-get install --reinstall dpkg upstart</span></blockquote>
<br />
At this point I was able to successfully boot Linux Mint 17; a tad slower than I expected, thus I am going to remove some undesired packages. This will probably be hijacked by the many dependencies into Ubuntu or Mint meta packages...I am surrendering to this logic these days, and will try to remove what is sensibly slowing down the startup without sacrificing too much of these hyper-dependent packages.<br />
<br />
<h3>
Undesired extensions</h3>
I noticed also that the branding is a bit too much aggressive, perhaps a reaction to the fact the distro itself is a re-branding of Ubuntu?<br />
Thus as advised in <a href="http://danielsmedegaardbuus.dk/2011-04-09/fixing-the-broken-and-mangled-search-in-firefox-4-on-linux-mint/" target="_blank">this post</a> I advise to add this line (before <i>exit 0</i>) in your /etc/rc.local, so that at every boot the eventually reinstalled firefox crapxtension will be removed:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">rm -rf /usr/lib/firefox/extensions/mint-search-enhancer@linuxmint.com/</span></blockquote>
I hope to not find other mind-boggling "features" like these, but so far so good: interface seems pretty sleek.<br />
<br />
<b>Update:</b> Found something else you might want to remove:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">aptitude remove <b>mint-search-addon</b> mintbackup mintnanny mintstick mintupload mintwifi </span></blockquote>
From package description of mint-search-addon:<br />
<blockquote class="tr_bq">
<i>Enhances the results given by Google</i></blockquote>
Yeah, sure, enhancements.<br />
<h3>
No pingbacks/comments</h3>
Looks like the <a href="http://blog.linuxmint.com/?p=2656" target="_blank">official blog</a> is not eager for community feedback & comments on their blog, as all posts are labelled with this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9hOWB32XWb2q1IRsfhzlVUO5PUKbLj03b8tXgoMwIvkOHeD5gCG_LIRq9RepnCqNoAhpMFdBYfv6n64BKeet0vsgx2yjTeWTi9egejvp8RbfaNGc4Wb5gmOVY4llzkTQBDxcQFdGWjCn8/s1600/all-closed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="1" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9hOWB32XWb2q1IRsfhzlVUO5PUKbLj03b8tXgoMwIvkOHeD5gCG_LIRq9RepnCqNoAhpMFdBYfv6n64BKeet0vsgx2yjTeWTi9egejvp8RbfaNGc4Wb5gmOVY4llzkTQBDxcQFdGWjCn8/s1600/all-closed.png" height="86" width="400" /></a></div>
Meh! Ok, so this will be a monologue :(<br />
<h3>
Credits </h3>
I know packing a distro and fixing bugs takes a lot of time and efforts, so the due closing credits line:<br />
<blockquote class="tr_bq">
Thanks to the Linux Mint and Ubuntu folks for this distro!</blockquote>
NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-45939603234683551022014-05-10T17:14:00.001+02:002014-05-10T20:23:47.106+02:00Let's run (chrooted) Debian Wheezy on LG Optimus Prime 4X HD (P880)I have been struggling quite a bit to find a lightweight ROM for my phone, but now that I have <a href="http://forum.xda-developers.com/showthread.php?t=2583176" target="_blank">finally settled down</a> I believe it's time to start playing <b>for real</b> with this smartphone.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH9jr3N8zoS4ftmtMuiZiF7mxauRgMuaLjx6t6Qq8aQ4RrVA9Kzfa9vlO6-wYiBNVuNkUYeuv5LfsWI3fD6b3HBpq5onPfREdKKsWK186tp5EABW7eBFGnyoUcUAFe2KkdHsd0Ncsf-1ZL/s1600/medium08.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH9jr3N8zoS4ftmtMuiZiF7mxauRgMuaLjx6t6Qq8aQ4RrVA9Kzfa9vlO6-wYiBNVuNkUYeuv5LfsWI3fD6b3HBpq5onPfREdKKsWK186tp5EABW7eBFGnyoUcUAFe2KkdHsd0Ncsf-1ZL/s1600/medium08.jpg" height="263" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">This is one of the official pictures provided by <a href="http://www.lg.com/my/mobile-phones/lg-P880" rel="nofollow" target="_blank">vendor</a>, probably photoshopped. Gotta love those glares! Imagine this: you are going to pay extra $$$ to have good photos made for your nice shiny new product, and then you photoshop them to add glare. Wonderful times we live in :)</td></tr>
</tbody></table>
<br />
My experiment will be to have a running Debian Wheezy 7 inside my Android, and I will use <a href="https://evilzone.org/android/debian-on-android/" target="_blank">this article as basis</a>; I had some issues with those instructions, thus I created this updated post. I know there is the nice <a href="https://github.com/guardianproject/lildebi" target="_blank">Lil'Debi</a> out there, but that would spoil most of the <i>fun</i> :)<br />
<br />
In order to build this Debian I am giving up a 4GB external microSD card that is plugged in my phone already, so first thing unmount it by going to Settings -> Storage:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinFVfg3fxIs5C8WzfmZTx2KZVPtP0Q5x5d-mSRA_dUmIVsMd_SA2UdhKOMQSYm7KKLfdFto6iME0yHNehw_wzlhCJj1nlDFCmOffbI4mMpAXw-zJw3JA0SxMDO4gaIwtWWQ9DvgbBC6Vh7/s1600/kies-connection-mode-2.png" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinFVfg3fxIs5C8WzfmZTx2KZVPtP0Q5x5d-mSRA_dUmIVsMd_SA2UdhKOMQSYm7KKLfdFto6iME0yHNehw_wzlhCJj1nlDFCmOffbI4mMpAXw-zJw3JA0SxMDO4gaIwtWWQ9DvgbBC6Vh7/s1600/kies-connection-mode-2.png" height="261" width="320" /></a></div>
<br />
<b>Make a backup</b> before continuing because we are going to <b>completely replace its content</b>.<br />
<br />
So, let's recap the needed ingredients:<br />
- a rooted Android phone, I am using LG Optimus Prime 4x HD<br />
- an external microSD card, minimum 2GB<br />
- debootstrap command on your Linux system (it's available almost everywhere)<br />
- adb & your phone's USB configured to receive adb commands <br />
<br />
Ready to go!<br />
Let's build a tarball of the base Debian system for our target architecture. I have added my scripts (from <a href="https://gist.github.com/neagix/bbfed4f91f8821bed7e7" target="_blank">this gist</a>) to ease setup, but I advise you go through each of them at least for learning purposes.<br />
<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">debootstrap --arch armel --foreign wheezy wheezy http://http.debian.net/debian/<br />cd wheezy<br />wget https://gist.github.com/neagix/bbfed4f91f8821bed7e7/download -O gist.tgz<br />tar xf gist.tgz<br />mv gist*/* root/<br />rm -r gist.tgz gist*<br />chmod +x root/*.sh<br />sudo tar cf ../debian-wheezy-armel.tgz .<br />cd ..</span></blockquote>
<br />
At this point upload the archive to your P880 and let's start hacking our way through Android.<br />
We will individuate our external SD by <b>excluding</b> the internal block device marked for boot. This is a hack, so always double-check results before <b>wiping out</b> the block device.<br />
<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">sudo adb push debian-wheezy-armel.tgz /data/local/</span><br />
<span style="font-family: "Courier New",Courier,monospace;">sudo adb shell</span><br />
<span style="color: blue;"><span style="font-family: "Courier New",Courier,monospace;">su</span></span><br />
<span style="color: blue;"><span style="font-family: "Courier New",Courier,monospace;">cd /dev/block/vold/ </span></span><br />
<span style="color: blue;"><span style="font-family: "Courier New",Courier,monospace;">for D in `ls`; do fdisk -l $D | grep ^`echo $D | awk '{ print substr($1, 1, 3) }'`; done | grep '*' | awk '{ print substr($1, 1, length($1)-2) }' > /data/local/boot-device.txt</span></span><br />
<span style="color: blue;"><span style="font-family: "Courier New",Courier,monospace;">clear && echo -e "**********************\nThe individuated device of your external SD is: $PWD/`ls | grep -v $(</data/local/boot-device.txt )`\nPlease double check with output of fdisk -l before proceeding!!!\n**********************\n" && rm /data/local/boot-device.txt</span></span></blockquote>
<br />
(commands in <span style="color: blue;">blue</span> are run in the adb shell, available also as <a href="https://gist.github.com/neagix/bbfed4f91f8821bed7e7#file-find-sd-vold-block-sh" target="_blank">gist here</a>)<br />
Example output you will see:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">**********************</span><br />
<span style="font-family: "Courier New",Courier,monospace;">The individuated device of your external SD is: /dev/block/vold/179:49</span><br />
<span style="font-family: "Courier New",Courier,monospace;">Please double check with output of fdisk -l before proceeding!!!</span><br />
<span style="font-family: "Courier New",Courier,monospace;">**********************</span><br />
<span style="font-family: "Courier New",Courier,monospace;"></span></blockquote>
Remember to double-check for correctness with fdisk, then take note of the individuated device. On my P880 it is:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">/dev/block/vold/179:49</span></blockquote>
Now we will format the external SD, use the default mountpoint <i>/storage/sdcard1</i> and extract the Debian base system on the external SD. The mount command will allow mounting the SD with <b>dev</b> and <b>exec</b> permissions, which are necessary for our Debian chroot to work.<br />
<br />
<b>NOTE:</b> do not copy/paste these commands but run them one by one, so that you can take action in case of errors.<br />
<br />
On the adb shell (replace device in bold with what you got from above, and remember to escape the ':'):<br />
<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;"><span style="color: blue;">mkfs.ext2 -L AndyWheezy <b>/dev/block/vold/179\:XXX</b><br />mount -o rw,noatime,nodiratime,user_xattr,acl,barrier=0,data=ordered,noauto_da_alloc -t ext4 <b>/dev/block/vold/179\:XXX</b> /storage/sdcard1/<br />cd /storage/sdcard1</span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="color: blue;">mkdir rootfs && cd rootfs && tar xf /data/local/debian-wheezy-armel.tgz</span></span></blockquote>
<br />
Once this operation is complete successfully, you are half-way :) Feel free to remove the archive with:<br />
<blockquote class="tr_bq">
<span style="color: blue;"><span style="font-family: "Courier New",Courier,monospace;">rm /data/local/debian-wheezy-armel.tgz</span></span></blockquote>
<br />
Now let's enter the chroot environment with:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;"><span style="color: blue;">busybox chroot /storage/sdcard1/rootfs /bin/bash</span></span></blockquote>
<br />
Thanks to the correct permissions on our external SD, you now have the wonderful and powerful bash prompt available at your fingers' range. <br />
<blockquote class="tr_bq">
<span style="color: #38761d;"><span style="font-family: "Courier New",Courier,monospace;">I have no name!@localhost:/#</span></span></blockquote>
In our new chroot, run these commands (these are safer to copy/paste):<br />
<blockquote class="tr_bq">
<span style="color: #38761d;"><span style="font-family: "Courier New",Courier,monospace;">export PATH=/usr/bin:/usr/sbin:/bin:$PATH<br />export TERM=linux<br />export HOME=/root<br />export USER=root<br />mkdir /dev/pts<br />mount -t devpts devpts /dev/pts<br />mount -t proc proc /proc<br />mount -t sysfs sysfs /sys<br />/debootstrap/debootstrap --second-stage </span></span></blockquote>
<br />
The last one will complete the debootstrap process, and will take some time (about 10 minutes for me).<br />
<br />
Once it's complete you are basically done with the preparation of the Debian chroot :)<br />
<br />
Now let's put the mount/umount scripts outside the chroot, so that you can easily call them in an Android shell:<br />
<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;"><span style="color: blue;">mkdir /data/local/debian </span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="color: blue;">mv /storage/sdcard1/rootfs/root/*.sh /data/local/debian/</span></span></blockquote>
<br />
From now on you can mount/umount your Debian chroot by calling one of these:<br />
<br />
<blockquote class="tr_bq">
<span style="color: blue;"><span style="font-family: "Courier New",Courier,monospace;">/data/local/debian/mount.sh # OR</span></span><br />
<span style="color: blue;"><span style="font-family: "Courier New",Courier,monospace;">/data/local/debian/umount.sh </span></span></blockquote>
<br />
Tips:<br />
- set hostname in chroot: <span style="color: #38761d;"><span style="font-family: "Courier New",Courier,monospace;">hostname AndyWheezy && hostname > /etc/hostname</span></span> <br />
- set APT sources in /etc/apt/sources.list (in chroot: <span style="font-family: "Courier New",Courier,monospace;"><span style="color: #38761d;">mv /root/sources.list /etc/apt/</span></span>)<br />
- install an SSH server<br />
- set your root password or better use certificates for remote login<br />
- automate chroot setup/teardown with some scripts and use <a href="https://code.google.com/p/gscript-android/" target="_blank">gscript</a> to start them, for example: <span style="color: blue;"><span style="font-family: "Courier New",Courier,monospace;">su -c '/data/local/debian/run.sh /storage/sdcard1 /etc/init.d/ssh start'</span></span><br />
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK7nutDujkQsBCz1vQ4Y0Nh4QjYIMwQVsYJmv4J6vWKqnlwtAkLTazD_X_tYtDrLdrObeKnsjkoiKID9wh4gkkOWYJCwY7W7j92oOe3X8n-D2aegedX-zNNvtY7oPfRYgGyBNlufWw7EZH/s1600/debbie.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK7nutDujkQsBCz1vQ4Y0Nh4QjYIMwQVsYJmv4J6vWKqnlwtAkLTazD_X_tYtDrLdrObeKnsjkoiKID9wh4gkkOWYJCwY7W7j92oOe3X8n-D2aegedX-zNNvtY7oPfRYgGyBNlufWw7EZH/s1600/debbie.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Here you see Debian Wheezy on all its glory, running from within a P880 Android device</td></tr>
</tbody></table>
<br />
<br />
<div style="text-align: center;">
Enjoy experimenting!</div>
NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-60289197939475259412013-10-13T01:28:00.000+02:002013-10-13T01:28:09.820+02:00odroid-wheezy-retro 0.8.2 released: kernel 3.8 and updatesWith this release I am proud to announce that 3.8.11 is stable enough for our retro-gaming purposes, thus it has been integrated in my retro image.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.kernel.org/" target="_blank"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAEtdh_xLSUl8FF5W8xmqCpowm7QVr0QjXWJa5ogjLaGxtZ_9OKQC4GH8Tgc3CzF7H3ozMDzKwyYHW96iax8ljQNIy6a0ZcdOXV2J_S5vADbIpW2eBCMo_SIxKYl62cTBMkoF6f7fVGTzL/s320/kernel+3.8.png" width="320" /></a></div>
<br />
<ul>
<li>now using hardkernel official 3.8.13.10 linux kernel</li>
<li>fixed support of Hardkernel upgrade script</li>
<li>added MFC firmware (s5p-mfc.fw)</li>
<li>supports XBMC (not included)</li>
<li>most recent Debian 7.1 packages</li>
<li>default partition size is now 2G</li>
<li>most recent RetroArch + cores</li>
<li>fixed bug with network at 1st boot</li>
</ul>
<div style="text-align: center;">
<span style="font-size: large;"><a href="http://code.google.com/p/odroid-wheezy-retro/downloads/list" target="_blank">Download Area</a> </span></div>
NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com1tag:blogger.com,1999:blog-7431595216008359743.post-50520820575946743462013-09-08T01:21:00.003+02:002013-09-14T11:08:08.305+02:00Let's play X-COM on the ODROID U2One of the classic games I always dreamt to play again (on bigger screens, with huge blocky pixels) is the original X-COM: Enemy Unknown (a.k.a. Ufo Defense).<br />
<br />
<span id="goog_334292049"></span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://www.xcomufo.com/" target="_blank"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyWdN8z86WZW9GK7RNDeI_yhPsvuAykoJcJlVTBVyWZZmiXQfxb2wAh_rYYFKHVTVTUYbhR1SQYIOtyL0WC6sC68SODuLS3tsjAsqiuNE0iQK2bSE2jaPRdqrQEeg9vG387esHSDSQ1OUp/s320/ufo+eu.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Not many of them survived every time I played this game</td></tr>
</tbody></table>
<span id="goog_334292050"></span><br />
<br />
<b>Spoiler:</b> Enemy Unknown works fine on our beloved U2s thanks to <a href="http://openxcom.org/" target="_blank">OpenXcom</a> :)<br />
<br />
I will explain here how to get it running in a few steps. You will need some patience and the original X-COM 1 game. See also <a href="https://github.com/SupSuper/OpenXcom/blob/master/README.txt" target="_blank">OpenXcom's README</a>.<br />
<br />
<h3>
Installing yaml 0.5 packages</h3>
<br />
You will need slightly more recent yaml packages than those provided with Debian Wheezy.<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">wget http://ftp.debian.org/debian/pool/main/y/yaml-cpp/libyaml-cpp-dev_0.5.1-1_armhf.deb<br />wget http://ftp.debian.org/debian/pool/main/y/yaml-cpp/libyaml-cpp0.5_0.5.1-1_armhf.deb</span><br />
<span style="font-family: "Courier New",Courier,monospace;">sudo dpkg -i libyaml*.deb</span><br />
<br />
<h3>
Compiling the sources</h3>
<br />
<span style="font-family: "Courier New",Courier,monospace;">git clone https://github.com/SupSuper/OpenXcom.git --depth=0 </span><br />
<span style="font-family: "Courier New",Courier,monospace;">cd OpenXcom </span><br />
<span style="font-family: "Courier New",Courier,monospace;">mkdir -p build</span><span style="font-family: "Courier New",Courier,monospace;">cd build</span><br />
<span style="font-family: "Courier New",Courier,monospace;">cmake ..</span><br />
<span style="font-family: "Courier New",Courier,monospace;">CFLAGS="-marm -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard" \<br />CXXFLAGS="-marm -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard" \<br />ASFLAGS="-marm -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard" \<br />make -j5</span><br />
<span style="font-family: "Courier New",Courier,monospace;">mv bin/data ~/.local/share/openxcom/data</span><br />
<span style="font-family: "Courier New",Courier,monospace;">## customize target of link with your favourite binaries location </span><br />
<span style="font-family: "Courier New",Courier,monospace;">ln -s $PWD/bin/openxcom /usr/local/bin/openxcom</span><br />
<br />
<br />
At this point, if everything went fine, you have almost finished.<br />
<br />
<br />
<h3>
Using the original game</h3>
<br />
Run the game by providing the original game's directory:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">SDL_AUDIODRIVER=alsa /usr/local/bin/openxcom -data /path/to/XcomEnemyUnknown/</span><br />
<br />
<br />
<b>NOTE:</b> The prefixed SDL_AUDIODRIVER variable is needed to force usage of ALSA, since I get garbled sound with pulse. If you don't have pulse installed then it's safe to assume that you won't need this environment variable<br />
<br />
<h3>
Game options</h3>
From options, select full screen and change resolution to 1280x720 for best gaming experience.<br />
<br />
Enjoy it! :) NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-9643383532163560072013-09-07T19:31:00.001+02:002013-09-07T19:31:54.807+02:00Postfix, virtual mailboxes and aliases: priority mattersSometimes - either for work or <i>leisure</i> - I need to configure Linux servers, and also mail servers.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://www.postfix.org/" imageanchor="1" style="margin-left: auto; margin-right: auto;" target="_blank"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ-kmFMIYcGMZtV0K86ExnleeeHo-qh7yj_jbotLOdIp9CYmYO1XdkIpdJEaQAUxyamSCTEQM2t5NNR2IGdh0dPL5CeFGCoXPWIXX_ioQVei8ex1f5_mpPX70GJtOKun_RXM2N_SQDdLFI/s1600/postfix.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><a href="http://www.postfix.org/" target="_blank">The '90s lovely logo of Postfix</a></td></tr>
</tbody></table>
<br />
postfix is a great software that I like to use for mailservers; in this post I want to describe you one feature that works in a counter-intuitive way.<br />
<br />
In postfix you can define mailboxes by specifying in your /etc/postfix/main.cf:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_maps</span><br />
<br />
<a href="http://www.postfix.org/VIRTUAL_README.html#virtual_mailbox" target="_blank">Official virtual MAILBOX example here</a><br />
<br />
You can also specify aliases, e.g. mailboxes that directly forward to other mailboxes, by specifying:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">virtual_alias_maps = hash:/etc/postfix/virtual_alias_maps</span><br />
<br />
<a href="http://www.postfix.org/VIRTUAL_README.html#virtual_alias" target="_blank">Official virtual ALIAS example here</a><br />
Aliases are useful for example when you want to define a catch-all alias forwarding all mail to the postmaster address.<br />
<br />
<h3>
Priority matters!</h3>
However, what I dislike is the priority applied to both: aliases have higher priority than mailbox maps (yes, <a href="http://comments.gmane.org/gmane.mail.postfix.user/105731" target="_blank">you've read right</a>).<br />
<br />
The first time I configured an alias I got all mail delivered to the catch-all address because I thought that - being less catchy - the catch-all addresses would have less priority.<br />
<br />
What you need to do is instead add identity definitions to the aliases map, this way:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">john@example.com john@example.com</span><br />
<span style="font-family: "Courier New",Courier,monospace;">mary@example.com mary@example.com</span><br />
<span style="font-family: "Courier New",Courier,monospace;">berry@example.com berry@example.com</span><br />
<span style="font-family: "Courier New",Courier,monospace;">@example.com postmaster@example.com</span><br />
<br />
In above example of <i>virtual_alias_maps</i>, the last line is the catch-all line, while the other lines are inherent to mailbox maps defined in <i>virtual_mailbox_maps</i>.<br />
<br />
Now tell me if that's not counter-intuitive, error-prone (because of the duplication) and less easy to mantain.NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com2tag:blogger.com,1999:blog-7431595216008359743.post-46109602843883885502013-09-01T20:14:00.001+02:002013-09-07T19:33:49.087+02:00The state of hardware acceleration on ODROID U2: 3rd roundThere has been fermentation and progress regarding the ongoing 3.8 issues (performance degradation, FIMC/FMC), today I have tested the 3.8 hardkernel linux tree, added <a href="http://forum.odroid.com/viewtopic.php?f=55&t=305&p=15670#p15670" target="_blank">some missing patches</a> and could finally complete my benchmarks.<br />
<br />
<table border="0" cellspacing="0" cols="7">
<colgroup span="6" width="85"></colgroup>
<colgroup width="102"></colgroup>
<tbody>
<tr>
<td align="center" height="32" style="border: 1px solid black;"><b>Kernel </b></td>
<td align="center" style="border: 1px solid black;"><b>X11 Driver</b></td>
<td align="center" style="border: 1px solid black;"><b>Resolution</b></td>
<td align="center" style="border: 1px solid black;"><b>glxgears</b></td>
<td align="center" style="border: 1px solid black;"><b>es2gears</b></td>
<td align="center" style="border: 1px solid black;"><b>glmark2-es2</b></td>
<td align="center" style="border: 1px solid black;"><b>glmark2-es2 --fullscreen</b></td>
</tr>
<tr>
<td align="center" height="17" style="border: 1px solid black;"><b>3.0.90</b></td>
<td align="center" style="border: 1px solid black;">ARM mali</td>
<td align="center" style="border: 1px solid black;">720p</td>
<td align="center" style="border: 1px solid black;">~ 140 fps</td>
<td align="center" style="border: 1px solid black;">~ 599 fps</td>
<td align="center" sdnum="2057;" sdval="142" style="border: 1px solid black;">142</td>
<td align="center" sdnum="2057;" sdval="81" style="border: 1px solid black;">81</td>
</tr>
<tr>
<td align="center" height="17" style="border: 1px solid black;"><b>3.0.90</b></td>
<td align="center" style="border: 1px solid black;">ssvb sunxi</td>
<td align="center" style="border: 1px solid black;">720p</td>
<td align="center" style="border: 1px solid black;">~ 144 fps</td>
<td align="center" style="border: 1px solid black;">~ 620 fps</td>
<td align="center" sdnum="2057;" sdval="156" style="border: 1px solid black;">156</td>
<td align="center" sdnum="2057;" sdval="92" style="border: 1px solid black;">91</td>
</tr>
<tr>
<td align="center" height="17" style="border: 1px solid black;"><b>3.8.13.7</b></td>
<td align="center" style="border: 1px solid black;">ARM mali</td>
<td align="center" style="border: 1px solid black;">720p</td>
<td align="center" style="border: 1px solid black;">~ 139 fps</td>
<td align="center" style="border: 1px solid black;">~ <b>659</b> fps</td>
<td align="center" sdnum="2057;" sdval="61" style="border: 1px solid black;"><b>143</b></td>
<td align="center" sdnum="2057;" sdval="37" style="border: 1px solid black;"><b>81</b></td>
</tr>
<tr>
<td align="center" height="17" style="border: 1px solid black;"><b>3.8.13.7</b></td>
<td align="center" style="border: 1px solid black;">ssvb sunxi</td>
<td align="center" style="border: 1px solid black;">720p</td>
<td align="center" style="border: 1px solid black;">~ 144 fps</td>
<td align="center" style="border: 1px solid black;">~ <b>447</b> fps</td>
<td align="center" sdnum="2057;" sdval="66" style="border: 1px solid black;"><b>87</b></td>
<td align="center" sdnum="2057;" sdval="42" style="border: 1px solid black;"><b>48</b></td>
</tr>
</tbody></table>
<br />
You can compare these tests with the <a href="http://neagix.blogspot.nl/2013/06/the-state-of-hardware-acceleration-on.html" target="_blank">2nd round of my benchmarks</a>: did you notice the difference? :)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqLvgWigLbht1AWRtyY_uSR0AS06WI3Vxg0jck4UuLPU7OVCB2yYv4SLpMpcbUgcFnyn4DEanMn1Sj6TMgUdKJqo8VZ-p3jgaEQYiaq-wKL3MpjDc5BA_iAzEUjpsEIe7XvIh-SZ6uXUlA/s1600/kernel+3.8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqLvgWigLbht1AWRtyY_uSR0AS06WI3Vxg0jck4UuLPU7OVCB2yYv4SLpMpcbUgcFnyn4DEanMn1Sj6TMgUdKJqo8VZ-p3jgaEQYiaq-wKL3MpjDc5BA_iAzEUjpsEIe7XvIh-SZ6uXUlA/s320/kernel+3.8.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.kernel.org/" target="_blank"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Yes, the performance degradation bug is fixed. Many thanks to <b>ovversun</b>, <b>memeka</b> and <b>mdrjr</b> for all their work and tests!NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com2tag:blogger.com,1999:blog-7431595216008359743.post-49900254684617551252013-07-28T20:24:00.001+02:002013-08-25T11:13:14.957+02:00Why eBay should disappear tomorrowI have been using (or better: being affected by...) eBay for almost a decade now. What is my opinion?<br />
<br />
It's the worst corporate-blind company in the world, not caring a dime about its customers and enjoying a de facto monopoly as much as they can.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2kBDqPhYRKrXZ19bpW9xayl9P0dNiKBMqAd5WvZE-g3oa4Zpc8yXvEkUZSwC5M3TWTKBas9xX8P_7Mb695EFv7hue8DtiRgnVaTVT57XNWkiZEYl49uFM1adRW53ZfvUql1ECMmR9IXEt/s1600/ebay+shit.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2kBDqPhYRKrXZ19bpW9xayl9P0dNiKBMqAd5WvZE-g3oa4Zpc8yXvEkUZSwC5M3TWTKBas9xX8P_7Mb695EFv7hue8DtiRgnVaTVT57XNWkiZEYl49uFM1adRW53ZfvUql1ECMmR9IXEt/s320/ebay+shit.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Image courtesy of <a href="http://whyebaysucks.info/">http://whyebaysucks.info/</a></td></tr>
</tbody></table>
<br />
This is the list of complaints I have for eBay:<br />
<ul>
<li>crappy user interface that didn't change in the last years, no improvement, no nothing. If the cash cow is milking well, why change anything, right?</li>
<li>you cannot change the <b>user interface language</b> and it must be the same language of the nation you have a living address in. Microsoft has the same habit. The message I perceive is: we don't care about you people moving across country borders. How you dare!</li>
<li>The HTML editor is...horrible </li>
<li>if you save your item as a draft, and then save another item as a draft..*puff!* your previous item is gone. No warning, no nothing.</li>
<li>where are our well paid government officials when it's about antitrust? By buying PayPal they created the best monopoly ever, and basically you are forced to use it when using eBay. There are little to zero alternatives, and using others you loose all the "protected customer" rights</li>
<li>account verification is a joke. It has a lot of glitches, it keeps looping in a stupid sequence of 3 forms if you haven't yet verified your account from PayPal. So cheap for such a big company, and the problem has been there at least 5 years already!</li>
<li>it doesn't matter if your item is conform to description. If the buyer complains, he will get the money back. You are on the weak side by selling on eBay.</li>
<li>if you want to sell abroad, eBay will show you that you need 10 feedback comments and 90 days must have elapsed after last sale. But only after you completed the insertion, just to make it more fun for you.</li>
</ul>
There are no sound alternatives that I know of, but I seriously hope that they will come to light...this online "service" already smells very bad these days.NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-13272957537476509182013-07-16T22:25:00.001+02:002013-09-01T20:19:55.041+02:00odroid-wheezy-retro 0.8.1 released: ALL RetroArch cores & fixesA new release!<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.libretro.com/" target="_blank"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUB5TXxn8w7XpfTR8lXUZFv2LIR-kzrbvvEGr7yF6xO75uttb7MesZmwNHY9F0QW3qIOuQ8v3gpwC_Eqe0igACYurGfx7tyvVS69L2OjVaxWDTpmEGP7CaGakT7Rct2JY5sSxDRVN4tOCZ/s1600/retroarch.png" /></a></div>
<br />
<ul>
<li>compiled <a href="http://code.google.com/p/odroid-wheezy-retro/wiki/RetroArch">RetroArch</a> with NEON-optimized sound resampler (thanks to Squarepusher) </li>
<li>enabled page flipping (DRI2_PAGE_FLIP) for smoother <a href="http://code.google.com/p/odroid-wheezy-retro/wiki/RetroArch">RetroArch</a> experience </li>
<li>added vim and missing packages for eduke32 and <a href="http://code.google.com/p/odroid-wheezy-retro/wiki/RetroArch">RetroArch</a>-Phoenix </li>
<li>removed modelviewer core, added <b>all</b> RetroArch cores </li>
<li>added ~/libretro-super </li>
<li>enabled all joystick drivers in kernel</li>
</ul>
<div style="text-align: center;">
<span style="font-size: large;"><a href="http://code.google.com/p/odroid-wheezy-retro/downloads/list" target="_blank">Download Area</a> </span></div>
NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com2tag:blogger.com,1999:blog-7431595216008359743.post-5391111541380622032013-07-14T21:25:00.001+02:002013-09-01T19:08:03.402+02:00odroid-wheezy-retro: wishlist & work-in-progressThese days I have been hacking around the ODROID U2 to improve RetroArch performance and better exploit the device's features.<br />
<br />
One important achievement is that DRI2_PAGE_FLIP is confirmed to not be negative (at least on 3.0 kernels), but instead gives a positive performance improvement, so please enable it in your xorg.conf configurations.<br />
<br />
This is my current wishlist, in priority from most important to lowest:<br />
<ul style="text-align: left;">
<li><b>good GPU performance on 3.8 kernel</b>, there has been some progress on this front recently but we are not yet there, 3.0 gives best performance so far <b>Update 1 September 2013:</b> there has been <a href="http://forum.odroid.com/viewtopic.php?f=55&t=305&p=15108" target="_blank">some progress</a> :)</li>
<li><b>G2D support on 3.8 kernel</b>, a support comparable to 3.0 kernel</li>
<li><b>G2D example usage</b>, see also my <a href="https://github.com/neagix/hello-odroid-g2d" target="_blank">hello-g2d-odroid</a> and <a href="http://forum.odroid.com/viewtopic.php?f=55&t=1731" target="_blank">this forum thread</a></li>
<li><b>G2D-accelerated X11 driver</b>, this could definitively possible once we have a working example</li>
<li><b>MFC-accelerated video decoding</b>, there has recently been <a href="http://forum.odroid.com/viewtopic.php?f=55&t=305&p=12635#p12157" target="_blank">some progress</a> on this </li>
<li><span style="color: lime;"><strike><b>VSYNC on 3.0 kernel</b></strike></span>, basically <a href="https://github.com/hardkernel/linux/commit/9744f6908728a64c32442d8d5a9b840e55bf9441" target="_blank">this patch</a> needs to be back-ported so that VSYNC ioctl calls actually do wait for VSYNC - <span style="color: lime;"><b>done! </b></span>Thanks to mdrjr for the <a href="https://github.com/hardkernel/linux/commit/70906f9bbac784a6550f769df3ec407f1844aafe">patch</a>; it is however verified that VSYNC is <span style="color: red;"><b>not working</b></span> because of a hardware issue with the HDMI PHY :( </li>
</ul>
The last one seems easy to accomplish, and the G2D example usage is definitively possible to complete, although nothing else is at my reach :(<br />
<br />
G2D acceleration is important to achieve because it would help at scaling anything using the hardware acceleration SoC.NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-647474544862445932013-07-11T08:28:00.002+02:002013-07-11T08:28:56.465+02:00odroid-wheezy-retro 0.8.0 released: more RetroArch coresI have been doing some usability testing with <a href="https://github.com/twinaphex" target="_blank">Squarepusher</a> and I have applied some improvements that were missing, so here you are with the 0.8.0 cumulative upgrade release.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS14rpADMiJfVH3Z86V48kWEIDRpv0bz_yWQU3IkfTN2PptXes-_g0oHU4Nd96nqs0RBRiL6L4UNy6jKKI4pACDVM4cciS10aO0cDAo9XKZ-zNfKN4YggLHNAaPYE_CCGrgFvPhP59Or1p/s1600/screenshot07.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS14rpADMiJfVH3Z86V48kWEIDRpv0bz_yWQU3IkfTN2PptXes-_g0oHU4Nd96nqs0RBRiL6L4UNy6jKKI4pACDVM4cciS10aO0cDAo9XKZ-zNfKN4YggLHNAaPYE_CCGrgFvPhP59Or1p/s320/screenshot07.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">ODROID Debian Wheezy, retro flavour</td></tr>
</tbody></table>
<br />
<ul>
<li>added following cores: <a href="http://gitorious.org/bsnes" target="_blank">BSNES(C++ 98)</a>, <a href="https://github.com/libretro/dosbox-libretro" target="_blank">DOSbox</a>, <a href="https://github.com/libretro/gambatte-libretro" target="_blank">gambatte</a>, <a href="https://github.com/ekeeke/Genesis-Plus-GX" target="_blank">genesis plus GX</a>, <a href="https://github.com/libretro/libretro-hatari" target="_blank">hatari</a>, <a href="https://github.com/libretro/nestopia" target="_blank">nestopia</a>, <a href="https://github.com/libretro/pcsx_rearmed" target="_blank">PCSX-ReARMed</a>, <a href="https://github.com/libretro/libretro-prboom" target="_blank">PrBoom</a>, <a href="https://github.com/libretro/snes9x-next" target="_blank">SNES9x-next</a>, <a href="https://github.com/libretro/tyrquake" target="_blank">TyrQuake</a>, <a href="https://github.com/libretro/vba-next" target="_blank">VBA-next</a> and the <a href="https://github.com/libretro/modelviewer-libretro" target="_blank">modelviewer</a></li>
<li>switched to official <a href="https://github.com/libretro/RetroArch" target="_blank">RetroArch</a> git tree (removed for now the <a href="https://github.com/neagix/RetroArch/commit/8584262203651912cdf45aaf9294a638aca6f8ad" target="_blank">poweroff patch</a>, the <a href="https://github.com/neagix/RetroArch/commit/fceffe962ae99024b7ebc66e5d6aec50b597428c" target="_blank">button release patch</a> and the <a href="https://github.com/neagix/RetroArch/commit/5064bb327b81fcd4bb7b8419b0f01ce2e7a20b5c" target="_blank">input debugging patch</a>)</li>
<li>added RetroArch-Phoenix for easier configuration </li>
<li>added <a href="http://www.eduke32.com/" target="_blank">eduke32</a>, poweroff and retroarch-phoenix icons</li>
<li>better desktop icons settings </li>
<li>added /etc/asound.conf to solve ALSA sound issues on HDMI output</li>
<li>added a custom udev script so that plugged gamepads are automatically readable by default user (no more chmod/chown needed)</li>
<li>upgraded Debian packages</li>
</ul>
<h4 style="text-align: center;">
<a href="http://code.google.com/p/odroid-wheezy-retro/downloads/list" target="_blank">Download area</a></h4>
NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-3502055712214765942013-07-10T22:29:00.002+02:002013-07-10T22:42:43.024+02:00Windows Update NoNagMost advanced users, sysadmins and developers that I know are extremely pissed off by the looping nag-screen that Windows Update shows after you install updates.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE_IfrW1IWuZVAdnsiuv704EhxQOKpHzxMRCIjolpo16pG3pdlNiXhAvYpEo399yAiE4upsP8TwJtB5beqFb755Cup1bt8AjvvBN4lsmQuvJYqUwhO3RmbEjykG2V7mYOdTPLoWxx373t0/s1600/nonag.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="191" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE_IfrW1IWuZVAdnsiuv704EhxQOKpHzxMRCIjolpo16pG3pdlNiXhAvYpEo399yAiE4upsP8TwJtB5beqFb755Cup1bt8AjvvBN4lsmQuvJYqUwhO3RmbEjykG2V7mYOdTPLoWxx373t0/s320/nonag.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">a bright example of an anti-feature</td></tr>
</tbody></table>
Although I have found online countless explanations about how to disable the above bastard dialog, they never worked quite well for me.<br />
<br />
Since I am a developer, I switched to heavy artillery:<br />
<br />
<a href="https://github.com/neagix/misc/tree/master/WindowsUpdateNoNag" target="_blank">https://github.com/neagix/misc/tree/master/WindowsUpdateNoNag</a><br />
<br />
You can grab the binary directly from here:<br />
<br />
<a href="https://github.com/neagix/misc/raw/master/WindowsUpdateNoNag/WindowsUpdateNoNag-AnyCpu-1.0-binary.zip" target="_blank">https://github.com/neagix/misc/raw/master/WindowsUpdateNoNag/WindowsUpdateNoNag-AnyCpu-1.0-binary.zip</a><br />
<br />
Right after you see that lovely dialog again, run this with Administrator privileges.<br />
NOTE: this tool will disable it only till your next windows update NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-46941004638582320822013-06-26T20:35:00.000+02:002013-06-27T08:40:35.788+02:00ODROID forum members Monthly Award of June<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: left;">
Yesterday I have received news that <a href="http://forum.odroid.com/viewtopic.php?f=7&t=26&start=40#p11426" target="_blank">my project has won the ODROID community Project Monthly Award</a>! Yuppiee!!</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
One more reason to party :)</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<div style="text-align: left;">
Many thanks again to <b>mdrjr</b> and <b>Lisa</b> from <a href="http://www.hardkernel.com/" target="_blank">Hardkernel</a> for this awesome award - this is really one of the best forum communities I have ever partecipated in. </div>
</div>
<div style="text-align: left;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIQQVuUPfEsKb3gKevBoINHJcn0YsipcKtDWg4GMHahuAlcjdKYDhn8wv8jV3-azYwPJktw5BrqpRtDlAbcJWOQUvjYQ6epjnrdSfNH9Hb5wVDwKq_K7aEVeWNQ8JbkxCyvgyGnUrkVASy/s1600/neuromancer+odroid+award.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIQQVuUPfEsKb3gKevBoINHJcn0YsipcKtDWg4GMHahuAlcjdKYDhn8wv8jV3-azYwPJktw5BrqpRtDlAbcJWOQUvjYQ6epjnrdSfNH9Hb5wVDwKq_K7aEVeWNQ8JbkxCyvgyGnUrkVASy/s320/neuromancer+odroid+award.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">I always start trying to make something cool with Gimp, then I end up with some awkward graphics like this. Fair enough, I can't do better anyway :)</td></tr>
</tbody></table>
<div style="text-align: left;">
This means an extra U2 to play with :) However, I have already 2 and I am not greedy, so I started thinking what it would be the natural usage of such great dev board...</div>
<div style="text-align: left;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHVcxCSa5bzBWgyp3zot6yL64esj0XEZN526-_2vtf7kK69XPsSNMgOLROfxroqPAACqsn23FzxqqOwW9BVlvbHldcvAPWZ8d7ZOsgZaEpth82pvPt7f3HPYhWI5P68XAZzX4YbmqRNqlo/s1600/retroarch.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHVcxCSa5bzBWgyp3zot6yL64esj0XEZN526-_2vtf7kK69XPsSNMgOLROfxroqPAACqsn23FzxqqOwW9BVlvbHldcvAPWZ8d7ZOsgZaEpth82pvPt7f3HPYhWI5P68XAZzX4YbmqRNqlo/s1600/retroarch.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Got any idea?</td></tr>
</tbody></table>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<a href="http://www.libretro.com/" target="_blank">RetroArch</a>! I quickly decided to have the RetroArch project, in the person of <a href="https://github.com/twinaphex" target="_blank">Squarepusher</a>, receive this hardware as a gift for the best of both our growing communities. I see potential for the combination ODROID+RetroArch and on the U2 RetroArch truly shines as a comet of power and great features (like the RGUI).</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
See how poetic and generous I become when I think about my beloved U2 and retro gaming? :)</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<h3>
More to see on this channel...</h3>
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
My commitment to ODROID community and RetroArch will now be even more motivated. I keep taking care of these releases and news because, as I said in the beginning, I would like to see a skilled development community grow up around these great hardware/software projects.</div>
<div style="text-align: left;">
I have plans for better integrated releases and also tighter testing/development support of RetroArch cores..keep tuned and/or join the efforts if you feel the challenge :)</div>
NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com4tag:blogger.com,1999:blog-7431595216008359743.post-32480389522018940672013-06-22T15:19:00.002+02:002013-06-27T08:44:08.301+02:00Duke Nukem 3D on ODROID<h3>
Chocolate Duke Nukem 3D: a sad story </h3>
<br />
I am a <a href="https://en.wikipedia.org/wiki/Duke_Nukem_3D" target="_blank">Duke Nukem 3D</a> <i>aficionado</i> and I've recently read with interest <a href="http://fabiensanglard.net/duke3d/" target="_blank">Fabien Sanglard's review of Duke Nukem 3D source code</a>. As he writes, the original source code was really <a href="http://fabiensanglard.net/duke3d/notes.txt" target="_blank">horrible</a>.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0qO6CjxBvMtxviyZa1-Nu1oKCmkxZvMwR4D1_aEu_57FvGa2ocRXD-eKLTUgxlzBYuvh_a5-jj_NTaGgxdnoT4TVH2XuDUC6v3ygGEqm2wK5ixofxMVCQbbMTwYRq52jUarhWRs2LOm9l/s1600/Duke_Nukem_3D_Cover.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0qO6CjxBvMtxviyZa1-Nu1oKCmkxZvMwR4D1_aEu_57FvGa2ocRXD-eKLTUgxlzBYuvh_a5-jj_NTaGgxdnoT4TVH2XuDUC6v3ygGEqm2wK5ixofxMVCQbbMTwYRq52jUarhWRs2LOm9l/s320/Duke_Nukem_3D_Cover.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The Duke on his glorious cover - <a href="http://www.3drealms.com/duke3d/" rel="nofollow" target="_blank">3D Realms page here</a></td></tr>
</tbody></table>
<br />
Fabien also started a <a href="https://github.com/fabiensanglard/chocolate_duke3D" target="_blank">Chocolate port</a>, so I grabbed it to try to run the Duke glories on ODROID/Linux. <br />
<br />
I realized - in disappointment - that this was a quick hack to have it running on Mac, not <a href="http://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom" target="_blank">a proper chocolate port</a>. <br />
Furthermore the provided Visual Studio solution files were referring to some previous version of the project, with non-matching paths and broken includes - making it also not possible to build it on Windows (<i>this portable is not, my young padawan</i>).<br />
<br />
During my own quest to have it building properly on Linux I decided to use <a href="https://github.com/canassa/chocolate_duke3D/" target="_blank">Canassa's patches</a>, since they seemed to be done in the reasonable framework of a chocolate port, and then I wrote my own Linux makefiles because Canassa is apparently also a Mac user - thus no Linux portability efforts were added at any time.<br />
<br />
<h3>
My chocolate improvements</h3>
In my fork I have added proper CMake support, grab it here: <a href="https://github.com/neagix/chocolate_duke3D" target="_blank">Chocolate Duke Nukem 3D with Linux compile support</a><br />
<br />
However the status of this codebase is almost hopeless:<br />
<ul>
<li>will not work on anything else than 32bit systems</li>
<li>some glitch when player dies</li>
<li>the 3D Realms logo has some palette quirk, doesn't look like it used to be</li>
</ul>
Me unhappy :( <br />
<a href="https://github.com/neagix/chocolate_duke3D" target="_blank"></a> <br />
<br />
If you try to run it on a 64bit system you get only the initial animation, then it goes on "Segmentation fault". That's kind of expected, given the waterfall of integer-to-pointer and pointer-to-integer warnings shown during compilation.<br />
<br />
<h3>
Next step: eduke32 </h3>
<br />
I didn't start from this more advanced port because I wanted to use a faithful version of Duke Nukem 3D, however I am now pleased to see that customization of the built eduke32 is possible to an extent that most advanced features can be turned off.<br />
<br />
This is perfect for our ODROID retro-goals! :)<br />
<br />
I have done some fixes and prepared a build script, grab them here: <a href="https://gist.github.com/neagix/5840769" target="_blank">eduke32 patch to run on ODROID + optimized build script</a><br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7P87P3YEv2pdRAl2gR7egzvSFQx7nsZfogzKuN1HHb7POfVUgEObshroDW_9vGVmXZhtOsHXfeshhIZCc0ybgdbs7P4ODzLbLYeOaBwA4YJ8LoH_w4Jol2E3w0QnyhOf9xBvZBZ6LnP77/s1600/duke-nukem-screen-1.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7P87P3YEv2pdRAl2gR7egzvSFQx7nsZfogzKuN1HHb7POfVUgEObshroDW_9vGVmXZhtOsHXfeshhIZCc0ybgdbs7P4ODzLbLYeOaBwA4YJ8LoH_w4Jol2E3w0QnyhOf9xBvZBZ6LnP77/s320/duke-nukem-screen-1.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Diplomacy is the best feature of this game, as I remember</td></tr>
</tbody></table>
<br />
And enjoy Duke Nukem 3D - it runs flawlessly fast on my U2!<br />
<br />
<b>P.S.</b>: I have added the <a href="http://oph.mdrjr.net/neagix/eduke32" target="_blank">eduke32 binary</a> to release 0.7.3 of odroid-debian-wheezy, or you can <a href="http://oph.mdrjr.net/neagix/eduke32" target="_blank">download it from here</a> (will only work with Debian Wheezy 7.1 ARM hardfloat)NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-29107835938653967482013-06-19T06:54:00.001+02:002013-06-20T08:23:13.335+02:00odroid-wheezy-base (new image) & odroid-wheezy-retro release updateTime for release! A bugfix release for odroid-wheezy-retro and a new image, even smaller! :)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRk1a_vRfUPW4X48TVNZndis0d-1AO7Z3HeLq7iaYVLOg7qxm5BYYWlQ_1sqgkp8GSxsVwqcM32mJlz6tRvPQdzTRWZgZesMdrjFb281aUxKwEAgRw7TzVI1nhs8kxteyjV4m00USZF8hI/s1600/openlogo-100.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRk1a_vRfUPW4X48TVNZndis0d-1AO7Z3HeLq7iaYVLOg7qxm5BYYWlQ_1sqgkp8GSxsVwqcM32mJlz6tRvPQdzTRWZgZesMdrjFb281aUxKwEAgRw7TzVI1nhs8kxteyjV4m00USZF8hI/s1600/openlogo-100.png" /></a></div>
<br />
<br />
The new base image, odroid-wheezy-base, contains:<br />
<ul>
<li>debootstrapped Debian root filesystem</li>
<li>wired network configured for DHCP</li>
<li>SSH</li>
<li>configured serial login on UART</li>
<li>nothing else!</li>
</ul>
<div style="text-align: center;">
<span style="font-size: large;"><a href="http://code.google.com/p/odroid-wheezy-retro/downloads/detail?name=odroid-wheezy-base-0.1.0.img.xz&can=2&q=" target="_blank">Download odroid-wheezy-base</a></span></div>
<br />
This is ideal to setup a Debian server with your ODROID, or to kickstart any other customization project you might have. To name only a few: (web)servers, robotics, domotics, top-boxes, you name it!<br />
<h3>
Release update for odroid-wheezy-retro</h3>
<br />
The nasty network issue is solved in 0.7.2:<br />
<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;"><a href="http://code.google.com/p/odroid-wheezy-retro/downloads/detail?name=odroid-wheezy-retro-u2-0.7.2.img.xz&can=2&q=" target="_blank">Download odroid-wheezy-retro 0.7.2</a> </span></div>
<br />
<h3>
The wildness of the network issue</h3>
Some users have reported network issues, however I was never able to
reproduce them. At some point I did, and the nature of this issue
manifested itself as a very nasty <a href="http://en.wikipedia.org/wiki/Heisenbug" target="_blank">heisenbug</a>.<br />
<br />
On first boot the ethernet MAC address was randomly generated and the SSH keys regenerated; it turns out that some randomly generated MAC addresses would make the ethernet never come up, with an error like:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">RTNETLINK answers: Cannot assign requested address<br />Listening on LPF/eth0/xx:xx:xx:xx:xx:xx<br />Sending on LPF/eth0/xx:xx:xx:xx:xx:xx<br />Sending on Socket/fallback<br />DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7<br />send_packet: Network is down<br />receive_packet failed on eth0: Network is down </span><br />
<br />
<h3>
Correlation is not causation</h3>
However, getting to the above conclusion was not easy because last week I observed the following and made wrong correlations:<br />
<ol>
<li><a href="http://forum.odroid.com/viewtopic.php?f=12&t=1526" target="_blank">downscaling issue</a> with one of my customized wheezy-retro SD images (no reason yet verified for this issue, although it is specific that SD image)</li>
<li>network issue with the dedicated wheezy-retro SD image (this was due to the smsc95xx_mac_addr file), letting me for the first time verify the issue of users</li>
<li>found some corrupt (all null bytes) files in the dedicated wheezy-retro SD image</li>
</ol>
Since file corruption can "taint" everything it touches, I assumed that both the downscaling and network issue were correlated and caused by the first-time observed file corruption.<br />
<br />
The lesson is that these issues should instead be considered separate (except 1 and 3 that still need to be verified for correlation), and I have applied mitigation (rsync checksum verification) for (3). NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com1tag:blogger.com,1999:blog-7431595216008359743.post-81591949314022902642013-06-09T20:43:00.002+02:002013-06-09T21:08:11.461+02:00odroid-wheezy-retro 0.7.1 released: now with desktop icons<h2>
0.7.1 released</h2>
From the <a href="http://code.google.com/p/odroid-wheezy-retro/wiki/ChangeLog" target="_blank">ChangeLog</a>:<br />
<ul>
<li>added <a href="https://github.com/neagix/idesk" rel="nofollow">idesk</a> as desktop manager </li>
<li>added all quicklaunch icons (lxterm, glxgears, es2gears, glmark2-es2, retroarch) </li>
<li>other minor improvements/fixes </li>
<li>version bump (to 0.7)</li>
</ul>
<h3>
Summary</h3>
In this version I am glad to introduce a nice & handy addition: desktop icons!<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkmMKgzHMRMsVOMxNzZfyOCUtzNGlzZWfjrVtXNAxwo8wT5TuHrgKTcxJGbjG3ocQAm6aWFdnxsuXs-OpmRIxzx0TVbiXjlfxFA_53atdTBnpc-sfPmki-2ftiOluQYE5Zy62NkuAIB304/s1600/screenshot.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkmMKgzHMRMsVOMxNzZfyOCUtzNGlzZWfjrVtXNAxwo8wT5TuHrgKTcxJGbjG3ocQAm6aWFdnxsuXs-OpmRIxzx0TVbiXjlfxFA_53atdTBnpc-sfPmki-2ftiOluQYE5Zy62NkuAIB304/s320/screenshot.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Looks much better now</td></tr>
</tbody></table>
Due to the constraints of this image (to be lightweight and development-oriented) I did not want to add any proper desktop environment and I fixed & compiled <a href="https://github.com/neagix/idesk" target="_blank">idesk</a> instead. It draws icons. That's all I wanted for this image.<br />
<br />
You can launch straight-ahead from desktop the following:<br />
<ul>
<li>LXterminal</li>
<li>GLX gears demo</li>
<li>ES2 gears demo</li>
<li>glmark2-es2 benchmark suite</li>
<li>RetroArch (with <a href="http://neagix.blogspot.com/2013/05/some-patches-for-retroarch.html" target="_blank">my patches</a>)</li>
</ul>
<br />
<div style="text-align: center;">
<span style="font-size: large;"><a href="http://code.google.com/p/odroid-wheezy-retro/downloads/list" target="_blank">Download</a> </span></div>
<ul>
</ul>
NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-47967620362972721132013-06-09T20:43:00.001+02:002013-06-09T20:43:23.145+02:00IDesk (fluxbox complement) forkedIn odroid-debian-wheezy-retro I am using the great fluxbox as a very lightweight window manager. An useful addition would be icons on the desktop to quick-launch applications.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6XXiKUWY9ijL_8gs7yT7f_pehEj5mva1d3yZ7yWKvHp90kHeOi57dp_TBqjKJr_GgDK8T1SKZL6xRlr3Z1NP585m_m-deSozpAO8Z7d-jhFxBX1DWEBhy-W6g5tIq0LlHL1fPUEAgbtri/s1600/idesk.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6XXiKUWY9ijL_8gs7yT7f_pehEj5mva1d3yZ7yWKvHp90kHeOi57dp_TBqjKJr_GgDK8T1SKZL6xRlr3Z1NP585m_m-deSozpAO8Z7d-jhFxBX1DWEBhy-W6g5tIq0LlHL1fPUEAgbtri/s320/idesk.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">This is one of the screenshots found at original IDesk SourceForge project. Seriously? >.<</td></tr>
</tbody></table>
<br />
My first choice, <a href="http://fluxbox.sourceforge.net/fbdesk/" target="_blank">fbdesk</a>, is unfortunately broken, so I digged around and the available options for a lightweight desktop were rox-desktop and <a href="http://sourceforge.net/projects/idesk/" target="_blank">idesk</a>. rox-desktop comes with a whopping 20 dependencies and idesk is outdated (2005).<br />
<br />
The problem with adding so many depencies to a development-oriented distro is that it breaks the <a href="http://code.google.com/p/odroid-wheezy-retro/wiki/Goals" target="_blank">philosophy and goals behind it</a>. Instead, by using the most lightweight choice (although less functional) you always leave the user the opportunity to easily make a choice and pick their own, and this is important.<br />
<br />
I ended up picking up the orphaned codebase, applying a few patches and polishing it for 2013 :)<br />
<br />
Here's my fork: <a href="https://github.com/neagix/idesk">https://github.com/neagix/idesk</a><br />
<br />
I will be mantaining it for a while, so please feel free to use the github facilities to contribute with patches or issue reports.NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-91431228690631353052013-06-09T12:18:00.002+02:002013-06-09T12:18:44.282+02:00The state of hardware acceleration on ODROID: 2nd roundToday I have repeated tests with current kernels:<br />
<br />
<table border="0" cellspacing="0" cols="7">
<colgroup span="6" width="85"></colgroup>
<colgroup width="102"></colgroup>
<tbody>
<tr>
<td align="center" height="32" style="border: 1px solid black;"><b>Kernel </b></td>
<td align="center" style="border: 1px solid black;"><b>X11 Driver</b></td>
<td align="center" style="border: 1px solid black;"><b>Resolution</b></td>
<td align="center" style="border: 1px solid black;"><b>glxgears</b></td>
<td align="center" style="border: 1px solid black;"><b>es2gears</b></td>
<td align="center" style="border: 1px solid black;"><b>glmark2-es2</b></td>
<td align="center" style="border: 1px solid black;"><b>glmark2-es2 --fullscreen</b></td>
</tr>
<tr>
<td align="center" height="17" style="border: 1px solid black;"><b>3.0.80</b></td>
<td align="center" style="border: 1px solid black;">ARM mali</td>
<td align="center" style="border: 1px solid black;">1080p</td>
<td align="center" style="border: 1px solid black;">~ 143 fps</td>
<td align="center" style="border: 1px solid black;">~ 590 fps</td>
<td align="center" sdnum="2057;" sdval="137" style="border: 1px solid black;">137</td>
<td align="center" sdnum="2057;" sdval="35" style="border: 1px solid black;">35</td>
</tr>
<tr>
<td align="center" height="17" style="border: 1px solid black;"><b>3.0.80</b></td>
<td align="center" style="border: 1px solid black;">ssvb sunxi</td>
<td align="center" style="border: 1px solid black;">1080p</td>
<td align="center" style="border: 1px solid black;">~ 140 fps</td>
<td align="center" style="border: 1px solid black;">~ 615 fps</td>
<td align="center" sdnum="2057;" sdval="151" style="border: 1px solid black;">151</td>
<td align="center" sdnum="2057;" sdval="40" style="border: 1px solid black;">40</td>
</tr>
<tr>
<td align="center" height="17" style="border: 1px solid black;"><b>3.0.80</b></td>
<td align="center" style="border: 1px solid black;">ARM mali</td>
<td align="center" style="border: 1px solid black;">720p</td>
<td align="center" style="border: 1px solid black;">~ 140 fps</td>
<td align="center" style="border: 1px solid black;">~ 600 fps</td>
<td align="center" sdnum="2057;" sdval="142" style="border: 1px solid black;">142</td>
<td align="center" sdnum="2057;" sdval="81" style="border: 1px solid black;">81</td>
</tr>
<tr>
<td align="center" height="17" style="border: 1px solid black;"><b>3.0.80</b></td>
<td align="center" style="border: 1px solid black;">ssvb sunxi</td>
<td align="center" style="border: 1px solid black;">720p</td>
<td align="center" style="border: 1px solid black;">~ 144 fps</td>
<td align="center" style="border: 1px solid black;">~ 620 fps</td>
<td align="center" sdnum="2057;" sdval="156" style="border: 1px solid black;">156</td>
<td align="center" sdnum="2057;" sdval="92" style="border: 1px solid black;">92</td>
</tr>
<tr>
<td align="center" height="17" style="border: 1px solid black;"><b>3.8.13</b></td>
<td align="center" style="border: 1px solid black;">ARM mali</td>
<td align="center" style="border: 1px solid black;">720p</td>
<td align="center" style="border: 1px solid black;">~ 136 fps</td>
<td align="center" style="border: 1px solid black;">~ 226 fps</td>
<td align="center" sdnum="2057;" sdval="61" style="border: 1px solid black;">61</td>
<td align="center" sdnum="2057;" sdval="37" style="border: 1px solid black;">37</td>
</tr>
<tr>
<td align="center" height="17" style="border: 1px solid black;"><b>3.8.13</b></td>
<td align="center" style="border: 1px solid black;">ssvb sunxi</td>
<td align="center" style="border: 1px solid black;">720p</td>
<td align="center" style="border: 1px solid black;">~ 143 fps</td>
<td align="center" style="border: 1px solid black;">~ 226 fps</td>
<td align="center" sdnum="2057;" sdval="66" style="border: 1px solid black;">66</td>
<td align="center" sdnum="2057;" sdval="42" style="border: 1px solid black;">42</td>
</tr>
</tbody></table>
<br />
Performance seems still halved with 3.8 kernel.<br />
The automated test suite will be released in <a href="http://code.google.com/p/odroid-wheezy-retro/" target="_blank">odroid-wheezy-retro</a> as a script. NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-36496645198622091272013-06-01T15:25:00.000+02:002013-06-02T00:47:23.028+02:00odroid-wheezy-retro 0.0.7 released<h2>
0.0.7 released </h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRk1a_vRfUPW4X48TVNZndis0d-1AO7Z3HeLq7iaYVLOg7qxm5BYYWlQ_1sqgkp8GSxsVwqcM32mJlz6tRvPQdzTRWZgZesMdrjFb281aUxKwEAgRw7TzVI1nhs8kxteyjV4m00USZF8hI/s1600/openlogo-100.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRk1a_vRfUPW4X48TVNZndis0d-1AO7Z3HeLq7iaYVLOg7qxm5BYYWlQ_1sqgkp8GSxsVwqcM32mJlz6tRvPQdzTRWZgZesMdrjFb281aUxKwEAgRw7TzVI1nhs8kxteyjV4m00USZF8hI/s1600/openlogo-100.png" /></a></div>
<br />
In this release:<br />
<ul>
<li>kernel 3.0.79 (with disabled fan PWM kern.log verbosity) </li>
<li>added <a href="https://github.com/ssvb/xf86-video-sunxifb" rel="nofollow">xf86-video-sunxifb</a>, you can enable it by copying <i>/etc/X11/Xorg.conf-sunxi</i> to <i>/etc/X11/Xorg.conf</i></li>
<li>added glmark2-es2 binary </li>
<li>updated <a href="http://code.google.com/p/odroid-wheezy-retro/wiki/RetroArch">RetroArch</a> binary </li>
<li>enabled HDMI 1080p output, (advice: <b>disable it</b> and use instead 720p to use RetroArch)</li>
<li>using EXT2 instead of EXT4 </li>
<li>fixed a few issues related to bootstrapping</li>
</ul>
ODROID models X/X2/Q are supported by replacing kernel and modules <b>before</b> flashing to SD card, you can get them from <b>mdrjr</b>'s <a href="http://builder.mdrjr.net/" target="_blank">builder download area</a>.<br />
<br />
<blockquote class="tr_bq">
<span style="font-size: large;"><a href="http://code.google.com/p/odroid-wheezy-retro/downloads/detail?name=debian-wheezy-dev-retro-v0.0.7.img.xz&can=2&q=" target="_blank">Download odroid-wheezy-retro-0.0.7</a></span></blockquote>
<br />
<br />
You can always check the <a href="http://code.google.com/p/odroid-wheezy-retro/wiki/ChangeLog" target="_blank">ChangeLog</a> and <a href="http://code.google.com/p/odroid-wheezy-retro/wiki/NextRelease" target="_blank">NextRelease</a> (suggestions are welcome).<br />
<a href="http://forum.odroid.com/viewtopic.php?f=9&t=1239" target="_blank">Official ODROID forum discussion here</a>. NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-46546417362315745582013-05-31T23:35:00.005+02:002013-06-09T12:19:12.654+02:00The state of hardware acceleration on ODROID (xf86-video-sunxi, xf86-video-mali and kernel 3.8)Yesterday I tried <a href="https://github.com/ssvb/xf86-video-sunxifb" target="_blank">xf86-video-sunxi</a> (thanks to <b>ssvb</b>, <b>rz2k</b> and <b>xjuan</b> for the support!) and I have to say that this driver bears promise, in particular regarding G2D support, that hopefully <a href="http://www.phoronix.com/scan.php?page=news_item&px=MTA3MDE" target="_blank">in future will bring us 2D hardware acceleration</a>.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSLz2OvK4rm2DUXVS0jwOBIfhEAaLPYrZm1sY7PWhbGXNsA_D97llu1bgwpfrjxAvAoIkfp_fJwV3-RDioZ7wA7KXMzz92mJgaj17VZdyIIjNII_B3ZW_AxCxqmzmBHMJVt8LHFA1i6DpZ/s1600/horse.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSLz2OvK4rm2DUXVS0jwOBIfhEAaLPYrZm1sY7PWhbGXNsA_D97llu1bgwpfrjxAvAoIkfp_fJwV3-RDioZ7wA7KXMzz92mJgaj17VZdyIIjNII_B3ZW_AxCxqmzmBHMJVt8LHFA1i6DpZ/s320/horse.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The rotating horse is always fun, even when you rotate it.</td></tr>
</tbody></table>
I have run tests with the following combinations (<a href="https://gist.github.com/neagix/5688080" target="_blank">some old test logs available here</a>):<br />
<br />
<table border="0" cellspacing="0" cols="7">
<colgroup width="85"></colgroup>
<colgroup width="184"></colgroup>
<colgroup span="2" width="120"></colgroup>
<colgroup width="149"></colgroup>
<colgroup width="287"></colgroup>
<colgroup width="105"></colgroup>
<tbody>
<tr>
<td align="CENTER" height="32" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><b><span style="font-family: Ebrima; font-size: medium;">Kernel </span></b></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><b><span style="font-family: Ebrima; font-size: medium;">X11 Driver</span></b></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><b><span style="font-family: Ebrima; font-size: medium;">Resolution</span></b></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><b><span style="font-family: Ebrima; font-size: medium;">es2gears</span></b></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><b><span style="font-family: Ebrima; font-size: medium;">glmark2-es2</span></b></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><b><span style="font-family: Ebrima; font-size: medium;">glmark2-es2 --fullscreen</span></b></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><b><span style="font-family: Ebrima; font-size: medium;">glxgears</span></b></td>
</tr>
<tr>
<td align="CENTER" height="28" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><b><span style="font-family: Ebrima; font-size: medium;">3.0.79</span></b></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><span style="font-family: Ebrima; font-size: medium;">ARM mali (31 may)</span></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">720p</span></strike></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">~ 345 fps</span></strike></td>
<td align="CENTER" sdnum="2057;" sdval="160" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">160</span></strike></td>
<td align="CENTER" sdnum="2057;" sdval="96" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">96</span></strike></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">125 fps</span></strike></td>
</tr>
<tr>
<td align="CENTER" height="28" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><b><span style="font-family: Ebrima; font-size: medium;">3.0.79</span></b></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><span style="font-family: Ebrima; font-size: medium;">ARM mali</span></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">720p</span></strike></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">~ 345 fps</span></strike></td>
<td align="CENTER" sdnum="2057;" sdval="160" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">160</span></strike></td>
<td align="CENTER" sdnum="2057;" sdval="96" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">96</span></strike></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">125 fps</span></strike></td>
</tr>
<tr>
<td align="CENTER" height="28" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><b><span style="font-family: Ebrima; font-size: medium;">3.0.79</span></b></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><span style="font-family: Ebrima; font-size: medium;">ssvb sunxi</span></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">720p</span></strike></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">~ 261 fps</span></strike></td>
<td align="CENTER" sdnum="2057;" sdval="153" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">153</span></strike></td>
<td align="CENTER" sdnum="2057;" sdval="89" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">89</span></strike></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">125 fps</span></strike></td>
</tr>
<tr>
<td align="CENTER" height="28" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><b><span style="font-family: Ebrima; font-size: medium;">3.8.13</span></b></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><span style="font-family: Ebrima; font-size: medium;">ARM mali (31 may)</span></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">720p</span></strike></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">~ 226 fps</span></strike></td>
<td align="CENTER" sdnum="2057;" sdval="61" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">61</span></strike></td>
<td align="CENTER" sdnum="2057;" sdval="37" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">37</span></strike></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">~ 140 fps</span></strike></td>
</tr>
<tr>
<td align="CENTER" height="28" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><b><span style="font-family: Ebrima; font-size: medium;">3.8.13</span></b></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><span style="font-family: Ebrima; font-size: medium;">ARM mali</span></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">720p</span></strike></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">~ 226 fps</span></strike></td>
<td align="CENTER" sdnum="2057;" sdval="61" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">61</span></strike></td>
<td align="CENTER" sdnum="2057;" sdval="37" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">37</span></strike></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">~ 140 fps</span></strike></td>
</tr>
<tr>
<td align="CENTER" height="28" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><b><span style="font-family: Ebrima; font-size: medium;">3.8.13</span></b></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><span style="font-family: Ebrima; font-size: medium;">ssvb sunxi</span></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">720p</span></strike></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">~ 226 fps</span></strike></td>
<td align="CENTER" sdnum="2057;" sdval="66" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">66</span></strike></td>
<td align="CENTER" sdnum="2057;" sdval="42" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">42</span></strike></td>
<td align="CENTER" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"><strike><span style="font-family: Ebrima; font-size: medium;">~ 144 fps</span></strike></td>
</tr>
</tbody></table>
<br />
<b>Update 8 June 2013: </b>see <a href="http://neagix.blogspot.com/2013/06/the-state-of-hardware-acceleration-on.html" target="_blank">2nd round of tests </a><br />
<br />
The compiled sunxi driver and glmark2-es2 are included in <a href="http://neagix.blogspot.com/2013/06/odroid-wheezy-retro-007-released.html" target="_blank">version 0.0.7</a> of the odroid-wheezy-retro SD image.<br />
<br />
<h3>
RetroArch</h3>
With both kernels and with both X11 drivers RetroArch performs well in windowed mode (50FPS with rare frame drops with the 3.8 kernel).<br />
<br />
<h3>
Conclusions</h3>
<ul>
<li>there is currently a performance issue on kernel 3.8, our beloved <b>mdrjr</b> is working on it</li>
<li>glxgears is always software-rendered (see <a href="http://code.google.com/p/odroid-wheezy-retro/wiki/HardwareAcceleration" target="_blank">HardwareAcceleration</a>), it's included only for reference</li>
<li>1080p resolution is slow with all configurations, thus I have not targeted it for testing</li>
<li>the new Mali drivers (<a href="http://malideveloper.arm.com/develop-for-mali/drivers/open-source-mali-gpus-linux-exadri2-and-x11-display-drivers/" target="_blank">r3p2 released on 31st May</a>) are the same as previous</li>
<li>xf86-video-sunxi starts to perform better on kernel 3.8, probably because of the NEON bug that affects 3.0</li>
</ul>
For now I will keep using kernel 3.0 and ARM mali drivers in <a href="http://code.google.com/p/odroid-wheezy-retro/" target="_blank">odroid-wheezy-retro</a> SD image, however I expect great improvements on both fronts (3.8 kernel and sunxi driver).NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-19711252964169941332013-05-28T00:05:00.001+02:002013-06-01T18:56:12.715+02:00A couple of updates for odroid-wheezy-retro (kernel 3.0.79 and 3.8.13)I have released 2 scripts to upgrade your <a href="http://code.google.com/p/odroid-wheezy-retro/" target="_blank">odroid-wheezy-retro</a> image to a more recent kernel:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.debian.org/" target="_blank"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRk1a_vRfUPW4X48TVNZndis0d-1AO7Z3HeLq7iaYVLOg7qxm5BYYWlQ_1sqgkp8GSxsVwqcM32mJlz6tRvPQdzTRWZgZesMdrjFb281aUxKwEAgRw7TzVI1nhs8kxteyjV4m00USZF8hI/s1600/openlogo-100.png" /></a></div>
<br />
<ul>
<li><a href="http://odroid-wheezy-retro.googlecode.com/git/upgrade-3.0.75-to-3.0.79.sh" target="_blank">upgrade-3.0.75-to-3.0.79.sh</a>, this will upgrade to the most recent 3.0.y kernel. This is currently stable & supported (by me) and will be in next SD image release (0.0.7); also contains a patch to silence the fan message spam in kern.log</li>
<li><a href="http://odroid-wheezy-retro.googlecode.com/git/upgrade-3.0.y-to-3.8.13.sh" target="_blank">upgrade-3.0.y-to-3.8.13.sh</a>, <b>this is experimental and subject to change without notice.</b> This script will upgrade to a recent (consider it a nightly build) 3.8 kernel, complete with modules</li>
</ul>
<b>NOTE: </b>it does not work perfectly with X/X2 e.g. you will have to fix some issues manually<br />
<ul>
</ul>
I have not yet decided when to put 3.8 on the odroid-wheezy-retro image - I am going to do some testing before that.<br />
<br />
If you are installing 3.8 remember to change your device from<b> /dev/fb6</b> to<b> /dev/fb1</b> in <b>/etc/X11/xorg.conf </b><br />
<br />
<a href="http://forum.odroid.com/viewtopic.php?f=9&t=1239" target="_blank">Official ODROID forum discussion here</a>. NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-50710754773021235562013-05-27T00:20:00.001+02:002013-06-26T19:52:46.164+02:00PCSX-ReARMed on ODROID-U2 (through RetroArch)<br />
These notes are useful to get PCSX-ReARMed (by notaz) running on an ODROID-U2, with full ARM optimizations.<br />
<br />
Due to some bug in the current configure/Makefiles, you will not be able to compile&run it succesffully. I got errors like this:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">RetroArch [ERROR] :: dylib_load() failed: "pcsx_rearmed_libretro.so: undefined symbol: gteNCLIP_arm".</span><br />
<span style="font-family: "Courier New",Courier,monospace;">RetroArch [ERROR] :: Failed to open dynamic library: "pcsx_rearmed_libretro.so"</span><br />
<span style="font-family: "Courier New",Courier,monospace;">RetroArch [ERROR] :: Fatal error received in: "load_dynamic()"</span><br />
<span style="font-family: "Courier New",Courier,monospace;"></span></blockquote>
And this:<br />
<blockquote>
<span style="font-family: "Courier New",Courier,monospace;">RetroArch [ERROR] :: dylib_load() failed: "pcsx_rearmed_libretro.so: undefined symbol: gteRTPT_neon".<br />RetroArch [ERROR] :: Failed to open dynamic library: "pcsx_rearmed_libretro.so"<br />RetroArch [ERROR] :: Fatal error received in: "load_dynamic()"</span></blockquote>
<br />
So here you are some instructions to get it running.<br />
First thing, get the libretro port:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">git clone https://github.com/libretro/pcsx_rearmed</span></blockquote>
<br />
Apply this patch:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;"><br /></span>
<span style="font-family: "Courier New",Courier,monospace;">diff --git a/Makefile b/Makefile<br />index a472492..ed95702 100644<br />--- a/Makefile<br />+++ b/Makefile<br />@@ -10,6 +10,9 @@ CXXFLAGS += $(CFLAGS)<br /> #DRC_DBG = 1<br /> #PCNT = 1<br /><br />+ARCH = arm<br />+HAVE_NEON=1<br />+<br /> all: config.mak target_ plugins_<br /><br /> ifndef NO_CONFIG_MAK<br />diff --git a/Makefile.libretro b/Makefile.libretro<br />index 9436c8a..8a0d67a 100644<br />--- a/Makefile.libretro<br />+++ b/Makefile.libretro<br />@@ -97,8 +97,6 @@ else ifeq ($(platform), arm)<br /> DRC_CACHE_BASE = 0<br /> BUILTIN_GPU = neon<br /> ARCH = arm<br />- CFLAGS += -marm -mcpu=cortex-a8 -mfpu=neon<br />- ASFLAGS += -mcpu=cortex-a8 -mfpu=neon<br /> else<br /> TARGET := $(TARGET_NAME)_retro.dll<br /> CC = gcc</span></blockquote>
<br />
Now you're (almost) set. Run this script:<br />
<blockquote class="tr_bq">
<br />
<span style="font-family: "Courier New",Courier,monospace;">export CFLAGS='-marm -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard'<br />export CXXFLAGS='-marm -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard'<br />export ASFLAGS='-marm -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard'<br />./configure --enable-neon</span><br />
<span style="font-family: "Courier New",Courier,monospace;">make -j5 -f Makefile.libretro <b>platform=arm</b></span></blockquote>
<br />
And enjoy PCSX-ReARMed on your ODROID :)<br />
<br />
<h3>
Issues</h3>
<strike>It is very slow! It's not performing very well, although all possible optimizations have been enabled.</strike> <b>Update 26 June 2013:</b> It's working very fast! Thanks to Squarepusher for the tip of using<b> platform=arm </b>:)<br />
<br />
Furthermore, CSO/ISO are not working.<b> Update 26 June 2013:</b> I don't yet know how to work-around this, will publish a new post when I doNeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-13607085484846815082013-05-18T15:18:00.003+02:002013-06-01T18:57:23.485+02:00odroid-wheezy-retro 0.6 released: you get kernel 3.0.75, 24bit HDMI output and wifi support!As per title I have just released version 0.0.6 of the image that contains:<br />
<ul>
<li>Hardkernel's linux kernel version 3.0.75, that comes with forced 24bit HDMI output (thanks to <a href="http://libv.livejournal.com/" target="_blank">libv</a> for the patch)</li>
<li>extra wifi drivers :)</li>
</ul>
<div style="text-align: center;">
<span style="font-size: large;"><a href="http://code.google.com/p/odroid-wheezy-retro/downloads/list" target="_blank">Downloads</a> </span></div>
<br />
If you have kernel 3.0.63 and want to upgrade just use the <a href="http://code.google.com/p/odroid-wheezy-retro/source/browse/upgrade-3.0.63-to-3.0.75.sh" target="_blank">upgrade script from repository</a>.<br />
<br />
I am planning to release an even more streamlined release, so keep tuned! :)<br />
<a href="http://forum.odroid.com/viewtopic.php?f=9&t=1239" target="_blank">Official ODROID forum discussion here</a>.NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0tag:blogger.com,1999:blog-7431595216008359743.post-13479739498614758622013-05-14T11:13:00.001+02:002013-07-23T18:57:15.354+02:00Recipe: compiling BSNES debugger (laevateinn) on LinuxBSNES is the best emulator around, there's little to say about that. Unfortunately the debugger is no more available in current higan because of refactoring and othe changes the author is making.<br />
<br />
Let's get the last working bsnes debugger, laevateinn, compiling & working (<b>spoiler:</b> <i>it.does.not.work</i>) on Linux:<br />
<span style="font-family: "Courier New",Courier,monospace;"><br /></span>
<span style="font-family: "Courier New",Courier,monospace;">git clone git://gitorious.org/bsnes/bsnes.git</span><br />
<span style="font-family: "Courier New",Courier,monospace;">cd bsnes</span><br />
<span style="font-family: "Courier New",Courier,monospace;">git checkout v089</span><br />
<span style="font-family: "Courier New",Courier,monospace;">cd bsnes </span><br />
<span style="font-family: "Courier New",Courier,monospace;">nano nall/Makefile # replace "gcc-4.7" with "gcc"</span><br />
<span style="font-family: "Courier New",Courier,monospace;">make -j3 target=laevateinn</span><br />
<br />
Finally the debugger will be found in <b>out/laevateinn</b>, but we are not yet there! It can only work with "cartridge folders".<br />
<br />
So let's compile purify as well, and run it:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">cd ..</span><br />
<span style="font-family: "Courier New",Courier,monospace;">cd purify</span><br />
<span style="font-family: "Courier New",Courier,monospace;">nano nall/Makefile # here replace "gcc-4.6" with "gcc"</span><br />
<span style="font-family: "Courier New",Courier,monospace;">make -j3</span><br />
<span style="font-family: "Courier New",Courier,monospace;">./purify output your-rom-path/ target-directory/</span><br />
<br />
<br />
Now we are ready to run laevateinn:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">cd ..</span><br />
<span style="font-family: "Courier New",Courier,monospace;">bsnes/out/laevateinn target-directory/</span><br />
<br />
However, I could not use it because it shows me a non-sexy black screen :(<br />
Possibly you might pick up the task from there.<br />
<br />
Meanwhile I am using <a href="http://geigercount.net/crypt/" rel="nofollow" target="_blank">T.Geiger's snes9x debugger</a> and I have contacted the author about sharing the sources (fingers crossed!)<br />
<br />
<b>Update 23 July 2013</b>: instructions for Ubuntu 13.04 provided by user <cite class="user"><a href="http://www.blogger.com/profile/11409137668786377510" rel="nofollow">Jay Oster</a></cite><br />
NOTE: bsnes looks for its system ROMs in ~/.config/laevateinn/<br />
<h4>
Dependencies</h4>
<span style="font-family: "Courier New",Courier,monospace;"> $ sudo apt-get update<br /> $ sudo apt-get install git build-essential libgtk2.0-dev libasound2-dev<br /> # FOR PURIFY<br /> $ sudo apt-get install libx11-dev</span><br />
<h4>
Build Laevateinn</h4>
<span style="font-family: "Courier New",Courier,monospace;"> $ git clone git://gitorious.org/bsnes/bsnes.git<br /> $ cd bsnes<br /> $ git checkout d418eda9<br /> $ vim bsnes/nall/Makefile # replace "gcc-4.7" with "gcc"<br /> $ make -C bsnes -j 8 target=laevateinn install</span><br />
<h4>
Build Purify</h4>
<span style="font-family: "Courier New",Courier,monospace;">$ vim purify/nall/Makefile # replace "gcc-4.6" with "gcc"<br /> $ vim purify/Makefile # add "link += `pkg-config --libs x11`"<br /> $ make -C purify -j 8</span><br />
<h4>
PUTRIFY your ROM library</h4>
<span style="font-family: "Courier New",Courier,monospace;">$ ./purify/purify output your-rom-path/ target-directory/ </span>NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com2tag:blogger.com,1999:blog-7431595216008359743.post-32601389721876109262013-05-11T12:28:00.004+02:002013-06-01T09:26:51.215+02:00odroid-wheezy-retro: updated wiki & releaseI have started to populate and mantain some wiki pages for <a href="http://code.google.com/p/odroid-wheezy-retro/"><span itemprop="name">odroid-wheezy-retro</span></a> <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.debian.org/" target="_blank"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRk1a_vRfUPW4X48TVNZndis0d-1AO7Z3HeLq7iaYVLOg7qxm5BYYWlQ_1sqgkp8GSxsVwqcM32mJlz6tRvPQdzTRWZgZesMdrjFb281aUxKwEAgRw7TzVI1nhs8kxteyjV4m00USZF8hI/s1600/openlogo-100.png" /></a></div>
<br />
<a href="http://code.google.com/p/odroid-wheezy-retro/w/list" target="_blank">ODROID Wheezy Retro Wiki</a><br />
<ul>
<li><a href="http://code.google.com/p/odroid-wheezy-retro/wiki/Index" target="_blank">Index</a></li>
<li><a href="http://code.google.com/p/odroid-wheezy-retro/wiki/FlashingToSD" target="_blank">FlashingToSD</a> </li>
<li><a href="http://odroid-wheezy-retro/" target="_blank">Goals</a> </li>
<li><a href="http://code.google.com/p/odroid-wheezy-retro/wiki/Customization" target="_blank">Customization</a></li>
<li><a href="http://code.google.com/p/odroid-wheezy-retro/wiki/Overclocking" target="_blank">Overclocking</a></li>
<li><a href="http://code.google.com/p/odroid-wheezy-retro/wiki/HardwareAcceleration" target="_blank">HardwareAcceleration</a></li>
<li><a href="http://code.google.com/p/odroid-wheezy-retro/wiki/RetroArch" target="_blank">RetroArch</a> - for all your emulation needs</li>
</ul>
<br />
It's hosted within the Google Code project's wiki, and it fits the purpose quite well so far.<br />
<br />
Current release is 0.0.5, I have fixed the <a href="http://www.spinics.net/lists/hotplug/msg04515.html" target="_blank">nasty issue with Debian automatic network udev rules</a>, thanks to user <b>be.lietaus</b> for reporting it.<br />
<br />
Many thanks to <b>mdrjr</b> for providing a backup location for the release files, that you can find <a href="http://oph.mdrjr.net/neagix/" target="_blank">here</a>.<br />
<br />
Are you an ODROID forum member? Please <a href="http://forum.odroid.com/viewtopic.php?f=8&t=26" target="_blank">vote for me on this thread</a>! Well, only if you like this release and want to see more about it coming :)<br />
<br />
<br />NeaGixhttp://www.blogger.com/profile/12076751129322693782noreply@blogger.com0