<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>John Wells &#187; Uncategorized</title>
	<atom:link href="http://www.jfwhome.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jfwhome.com</link>
	<description>Knowledge Management and Social Web App Guru</description>
	<lastBuildDate>Mon, 04 Jan 2016 17:26:35 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9</generator>
	<item>
		<title>Latest steps to install Ubuntu on the Asus T100TA</title>
		<link>http://www.jfwhome.com/2016/01/04/latest-steps-to-install-ubuntu-on-the-asus-t100ta/</link>
		<comments>http://www.jfwhome.com/2016/01/04/latest-steps-to-install-ubuntu-on-the-asus-t100ta/#comments</comments>
		<pubDate>Mon, 04 Jan 2016 15:07:07 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.jfwhome.com/?p=358</guid>
		<description><![CDATA[A year and a half on, it&#8217;s much easier to get a fully-working Linux install on the Asus Transformer T100TA. Remember when nothing really worked, and we had to jump through hoops just to get battery monitoring, or power off working? And wifi was just a pain? How things have changed&#8230; Much of the work&#8230;]]></description>
				<content:encoded><![CDATA[<p>A year and a half on, it&#8217;s much easier to get a fully-working Linux install on the Asus Transformer T100TA. Remember when nothing really worked, and we had to jump through hoops just to get battery monitoring, or power off working? And wifi was just a pain? How things have changed&#8230;</p>
<p><span id="more-358"></span></p>
<p>Much of the work testing and patching new kernels has been done by Brainwreck and the guys over at the <a href="https://plus.google.com/communities/117853703024346186936">Asus T100 Ubuntu Google+ group</a>. I&#8217;ve been away moving house (and job, and country), so sorry for not being around.</p>
<p>I recently did a full reinstall, and here are the latest steps I took to get an almost fully-working machine.</p>
<p>This post refers heavily to the <a href="http://www.jfwhome.com/2014/03/07/perfect-ubuntu-or-other-linux-on-the-asus-transformer-book-t100/">original installation post from 2014</a>. for more detail on any of the steps, you might want to take a look there or in the many helpful comments from other users.</p>
<h3>Current status (updated 04/01/2016)</h3>
<div style="border: 1px solid #fff;">
<ul>
<li><strong>Graphics</strong>: Working with accelerated (3D) graphics <strong style="color: green;">8/10</strong></li>
<li><strong>Wifi</strong>: Working well with stock Ubuntu and later kernels, some patching needed in latest 4.3 &#038; 4.4 kernels <strong style="color: green;">6/10</strong></li>
<li><strong>Touchscreen</strong>: Working out of the box (no multitouch though) <strong style="color: green;">10/10</strong></li>
<li><strong>Sound</strong>: Working, minor configuration needed <strong style="color: green;">9/10</strong></li>
<li><strong>SD card reader</strong>: Working out of the box <strong style="color: green;">10/10</strong></li>
<li><strong>Battery monitoring</strong>: Working out of the box <strong style="color: green;">10/10</strong></li>
<li><strong>Tablet keys (Volume up/down etc)</strong>: Working out of the box <strong style="color: green;">10/10</strong></li>
<li><strong>Power management (Suspend/resume)</strong>: Not yet working reliably &#8212; following suspend, tablet keeps suspending. Shutdown/restart works fine though.<strong style="color: orange;">5/10</strong></li>
<li><strong>Orientation sensor</strong>: fully working, auto-rotation working <strong style="color: green;">10/10</strong></li>
<li><strong>Backlight &amp; ambient light sensor</strong>: Fully working, auto backlight adjustment possible with custom script<strong style="color: green;">10/10</strong></li>
<li><strong>Touchpad</strong>: Working, no multitouch yet <strong style="color: green;">8/10</strong></li>
<li><strong>camera</strong>: Not yet working, but similar mt9m114 driver exists, playing to get it to recognise correct i2c ID <strong style="color: red;">2/10</strong></li>
<li><strong>Bluetooth</strong>: Needs patching with recent kernels <strong style="color: orange;">5/10</strong></li>
</ul>
</div>
<h3>1. First steps: Preparing for the Ubuntu Install</h3>
<p>As before, prepare a bootable USB stick, but you can use the Ubuntu 15.10 amd64 release &#8212; no need for a latest daily build.</p>
<p>Prepare the stick any way you like, but when done, browse to the EFI/Boot directory, and place <a href="https://github.com/jfwells/linux-asus-t100ta/blob/master/boot/bootia32.efi">this bootloader</a> (named bootia32.efi) there. This bootloader was compiled from source using the latest Grub2. If you don&#8217;t trust random downloaded files from the Internet (and you shouldn&#8217;t), you can find the instructions for building it yourself <a href="https://github.com/jfwells/linux-asus-t100ta/tree/master/boot">here</a>.</p>
<h3>2. Booting the Live Image</h3>
<p>As before, ensure SecureBoot is disabled and boot to the USB stick (see the old post for detailed instructions if you don&#8217;t know how). You can jump straight to &#8220;Install Ubuntu&#8221; once the Grub menu pops up &#8212; no need to edit anything any more.</p>
<h3>3. The Ubuntu installer</h3>
<p>In the installer, the partitioning scheme you choose is up to you &#8212; but you will need to preserve the EFI partition, so don&#8217;t just partition the entire disk for Ubuntu. </p>
<p>In addition to the EFI partition, I prefer separate /, /home and /boot mount points; but that is up to you. You could squish down the Windows partition and create the additional partition(s), or just delete the Windows partition altogether if you don&#8217;t need it. It&#8217;s up to you if you want to blow away Windows or not.</p>
<p>The installer might fail when installing the bootloader. That doesn&#8217;t matter &#8212; even if it didn&#8217;t fail, it wouldn&#8217;t work.</p>
<p>When the installer completes, reboot, leaving the USB stick in. </p>
<h3>4. First boot</h3>
<p>Ubuntu won&#8217;t boot yet. We&#8217;ll need to install the bootloader properly. So we&#8217;ll have to manually bootstrap Ubuntu the first time.</p>
<p>Boot back to the Grub welcome screen on the USB stick. Hit &#8216;c&#8217; to drop to a Grub command line.</p>
<p>You&#8217;ll need to provide Grub with the path to your kernel and initrd to boot. These are both in your /boot directory. First, the path to the kernel:</p>
<p><code><br />
linux (hd2,gpt5)/boot/vmlinuz-3.13-xxxx root=/dev/mmcblk0p5<br />
</code></p>
<p>Here, (hd2, gpt5) refers to the fifth partition on the third disk (Partition numbering begins at 1 and disk numbering begins at 0). This will vary depending on how you installed and your T100 model. On my 32GB model, Grub assigns the USB stick as hd0, the read-only recovery flash chip as hd1, and the main internal flash as hd2. gpt5 is the fifth partition, but it will depend on how you installed (specifically, where /boot is). </p>
<p>Fortunately, grub has good auto-completion features, so you can hit <Tab> twice as you type, and grub will list possible completions for you &#8212; just keep trying until you see the various vmlinuz kernels. </p>
<p>The root=/dev/mmcblk0p5 will also depend on the partition you installed to. It will be your root partition. Unfortunately this can&#8217;t be auto-completed, so if you can&#8217;t remember your partition setup, you&#8217;ll need to try by trial and error. Only the number after the &#8216;p&#8217; will change &#8212; and it will probably be p5, p6 or p7.</p>
<p>To complete the line, press Enter. </p>
<p>Then you need to specify the location of your initrd. This is easy, it&#8217;s in the same place as the kernel:<br />
<code>initrd (hd2,gpt5)/boot/initrd-3.13-xxxx </code></p>
<p>Then Enter. </p>
<p>Then boot with:<br />
<code>boot</code></p>
<p>With luck after hitting Enter, you&#8217;ll boot through to Ubuntu. If it boots but you get dropped to a Busybox prompt, you got everything correct apart from the root location. Don&#8217;t be disheartened &#8212; keep trying.</p>
<h3>5. Enabling wifi </h3>
<p>To get further, we&#8217;ll need wifi. This is much, much easier than before &#8212; the driver is included with stock Ubuntu. We just need to copy across an nvram file from our firmware to the driver firmware, so open a terminal and type (replace XXXXXX with the real name &#8212; just press tab to autocomplete):</p>
<p><code><br />
sudo cp /sys/firmware/efi/efivars/nvram-XXXXXX /lib/firmware/brcm/brcmfmac43241b4-sdio.txt<br />
</code></p>
<p>(Just a year ago we were custom compiling whole kernels just to get those efivars mounted, how times have changed&#8230;)</p>
<p>Then reload the brcmfmac driver:</p>
<p><code><br />
sudo modprobe -r brcmfmac<br />
sudo modprobe brcmfmac<br />
</code></p>
<p>And your wifi should come up.</p>
<h3>6. Completing the installation</h3>
<p>Time to fix the bootloader. To do this, we can just install grub-efi-ia32:</p>
<p><code><br />
sudo apt-get update<br />
sudo apt-get install grub-efi-ia32<br />
</code></p>
<p>We need to add a line to the kernel boot options to prevent disk corruption.<br />
Edit the grub configuration file:<br />
<code><br />
sudo nano /etc/default/grub<br />
</code><br />
Find the line starting <code>GRUB_CMDLINE_LINUX_DEFAULT</code> and add <code>intel_idle.max_cstate=0 </code> before <code> quiet splash"</code>.</p>
<p>Then ctrl-o, ctrl-x to save &#038; exit, and type:<br />
<code>sudo update-grub</code> to update Grub.</p>
<p>Remove the USB stick and reboot, and you should now have a self-sufficient booting system.</p>
<h3>7. Sound</h3>
<p>I killed my speakers playing with early sound drivers (fortunately I replaced them with speakers that came along when I had to replace a broken touch screen). Things are much better now though. </p>
<p>The driver is already loaded and working in stock ubuntu, we just need to load an Alsa state file:</p>
<p>Grab the file <a href="https://drive.google.com/folderview?id=0B4s5KNXf2Z36cmt0dERRaDUtVEk&#038;usp=sharing&#038;tid=0B9C1WK1FQhjfcXNrbzN6djQzajg">here</a>, and copy it to /var/lib/alsa/asound.state .</p>
<p>Load the state file into alsa with:<br />
<code>sudo alsactl restore</code>.</p>
<p>Sound should start working.</p>
<h3>8. Upgrading to a newer kernel</h3>
<p>To get backlight, hotkeys, tablet keys, etc working, we&#8217;ll need a newer, patched kernel. I haven&#8217;t played too much with the latest kernels yet, but there seem to be a few regressions. I found the <a href="https://drive.google.com/folderview?id=0BypQwP0us6vqMUFNMlVBRXdEMW8&#038;usp=sharing&#038;tid=0B9C1WK1FQhjfcXNrbzN6djQzajg">this</a>, compiled kernel to be the best available.</p>
<p>(The usual warnings apply about trusting stuff other people have compiled).</p>
<p>Download the amd64 linux-image, linux-firmware and linux-headers files, and install them one by one using:<br />
<code><br />
sudo dpkg-i linux-xxxxx<br />
</code></p>
<p>&#8230; and reboot when done.</p>
<h3>9. Other scripts</h3>
<p>I have made (and/or borrowed) some additional <a href="https://github.com/jfwells/linux-asus-t100ta/tree/master/support-scripts">support scripts</a> to improve usability.</p>
<p>Download and save all the raw files somewhere (I put mine in ~/scripts). they all need to be in the same place.</p>
<p>Set them all to be executable:<br />
<code><br />
chmod ugo+x ~/scripts/*.sh<br />
</code></p>
<p>base-station.sh enables/disables the Onboard on-screen keyboard when you undock/dock the tablet. Set up the onscreen keyboard first in System Settings &rarr; Accessibility (or type &#8220;onboard&#8221; in the terminal, and set it to automatically run on system start), then the scripts will enable/disable they keyboard for text fields. A nice notification is also displayed when the dock status is changed. Add it to your user&#8217;s startup scripts (type &#8216;Startup Applications&#8217; in the dash) so it runs on login. Don&#8217;t add it to /etc/rc.local &#8212; it needs to run as the current user).</p>
<p>rotate.sh (via Kirill Belyaev) auto-rotates the screen/touchscreen. Again, add it to Startup Applications (NOT /etc/rc.local). </p>
<p>auto-brightness.sh automatically adjusts the backlight using the ambient light sensor. Ensure the light sensor driver is loaded (<code>sudo modprobe cm3218x</code>) and add the following line to your /etc/rc.local file, before the &#8216;exit&#8217; line:</p>
<p><code><br />
/path/to/script/auto-brightness.sh &#038;<br />
</code></p>
<p>Test it by shining a torch on the light sensor.</p>
<p>And that&#8217;s it&#8230; by this point, you should have a fairly workable installation, provided you avoid using suspend and hibernation, and don&#8217;t need to use the webcam.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jfwhome.com/2016/01/04/latest-steps-to-install-ubuntu-on-the-asus-t100ta/feed/</wfw:commentRss>
		<slash:comments>227</slash:comments>
		</item>
		<item>
		<title>Communicating with the UPiS UPS from RasPlex</title>
		<link>http://www.jfwhome.com/2014/05/26/communicating-with-the-upis-ups-from-rasplex/</link>
		<comments>http://www.jfwhome.com/2014/05/26/communicating-with-the-upis-ups-from-rasplex/#comments</comments>
		<pubDate>Mon, 26 May 2014 07:52:47 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.jfwhome.com/?p=338</guid>
		<description><![CDATA[As part of my recent media centre build, I wanted to have a Raspberry Pi running RasPlex power down gracefully when power was removed. The UPiS Advanced UPS to the rescue! Despite the terrible name, this UPiS comes complete with a battery and UART so that the power status can be monitored from the Raspberry&#8230;]]></description>
				<content:encoded><![CDATA[<p>As part of my recent <a href="http://www.jfwhome.com/2014/05/01/raspberry-pi-powered-waterproof-plex-media-centre/">media centre build</a>, I wanted to have a Raspberry Pi running <a href="http://www.rasplex.com/">RasPlex </a>power down gracefully when power was removed. The <a href="http://pimodules.com/_pdf/UPiS%20Module.pdf">UPiS Advanced</a> UPS to the rescue! Despite the terrible name, this UPiS comes complete with a battery and UART so that the power status can be monitored from the Raspberry Pi.</p>
<p>The script is straightforward enough &#8212; it queries the UPiS every few seconds. If it detects that power is removed, it shuts itself down and triggers the &#8220;file sfe shutdown&#8221; on the UPiS. After 30 seconds or so, with everything safely shut down, the UPiS cuts power.</p>
<p>The script is in Python and requires PySerial. However, RasPlex is very bare-bones, python libraries can&#8217;t be compiled and nothing can be installed (there is no package manager). It turns out, however, that this doesn&#8217;t matter &#8212; PySerial can be installed to a local folder and run from source.</p>
<p>The (small) code and instructions for running <a href="https://github.com/jfwells/UPiS-rasplex-control">are on my GitHub repository</a>. PySerial is included.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jfwhome.com/2014/05/26/communicating-with-the-upis-ups-from-rasplex/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>About Me</title>
		<link>http://www.jfwhome.com/2014/05/20/about-me/</link>
		<comments>http://www.jfwhome.com/2014/05/20/about-me/#comments</comments>
		<pubDate>Tue, 20 May 2014 05:43:24 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.jfwhome.com/?p=296</guid>
		<description><![CDATA[Based in Shanghai, China, I&#8217;m an experienced knowledge and digital marketing leader with a particular interest in social media and web application design. I&#8217;m passionate about sharing knowledge, and am a strong advocate for open source and software freedom. Some of my recent personal work includes: WP-United: A project that integrates leading social software to&#8230;]]></description>
				<content:encoded><![CDATA[<p>Based in Shanghai, China, I&#8217;m an experienced knowledge and digital marketing leader with a particular interest in social media and web application design.</p>
<div class='powr-social-media-icons' label=''></div>
<p>I&#8217;m passionate about sharing knowledge, and am a strong advocate for open source and software freedom. </p>
<p>Some of my recent personal work includes:</p>
<ul>
<li><strong><a href="http://www.wp-united.com">WP-United</a></strong>: A project that integrates leading social software to make better social sites. WP-United empowers hundreds of communities all over the web, from small university clubs to large newspapers and corporate intranets.</li>
<li><strong><a href="http://www.rmbtb.com" title="RMBTB">rmbtb.com</a></strong>: One of the first Bitcoin exchanges in China, with top notch security and features, including an advanced secure API. One of the few Bitcoin sites not to get hacked and lose a bunch of money! RMBTB is now closed due to Chinese legislation banning Bitcoin.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jfwhome.com/2014/05/20/about-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reboot TP-Link router remotely or automatically</title>
		<link>http://www.jfwhome.com/2012/06/18/reboot-tp-link-router-remotely-or-automatically/</link>
		<comments>http://www.jfwhome.com/2012/06/18/reboot-tp-link-router-remotely-or-automatically/#comments</comments>
		<pubDate>Mon, 18 Jun 2012 05:09:09 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.jfwhome.com/?p=171</guid>
		<description><![CDATA[using cURL or wget, it&#8217;s easy to reboot a TP-Link router from a terminal or command line. Put it in a script and schedule it to run automatically if your router overheats or is flaky: in OSX (using cURL): curl --user username:password http://192.168.1.1/userRpm/SysRebootRpm.htm?Reboot=Reboot > /dev/null If you have wget by default instead of cURL (i.e.&#8230;]]></description>
				<content:encoded><![CDATA[<p>using cURL or wget, it&#8217;s easy to reboot a TP-Link router from a terminal or command line. Put it in a script and schedule it to run automatically if your router overheats or is flaky:</p>
<p>in OSX (using cURL):<br />
<code><br />
curl --user username:password http://192.168.1.1/userRpm/SysRebootRpm.htm?Reboot=Reboot > /dev/null<br />
</code></p>
<p>If you have wget by default instead of cURL (i.e. most *nix):<br />
<code><br />
wget -qO- --user=username --password=password http://192.168.1.1/userRpm/SysRebootRpm.htm?Reboot=Reboot > /dev/null<br />
</code></p>
<p>Replace username and password with the admin username and password of your router. Replace 192.168.1.1 with the IP address of your router.</p>
<p>If you have Windows, with neither of the above, and don&#8217;t want to download wget, try using bitsadmin to create a download job.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jfwhome.com/2012/06/18/reboot-tp-link-router-remotely-or-automatically/feed/</wfw:commentRss>
		<slash:comments>449</slash:comments>
		</item>
		<item>
		<title>Selecting x items at random from a column in Excel</title>
		<link>http://www.jfwhome.com/2012/03/15/selecting-x-items-at-random-from-a-column-in-excel/</link>
		<comments>http://www.jfwhome.com/2012/03/15/selecting-x-items-at-random-from-a-column-in-excel/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 10:07:54 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Excel]]></category>

		<guid isPermaLink="false">http://www.jfwhome.com/?p=162</guid>
		<description><![CDATA[I wanted to select 300 users at random from a row of 10,000 users in Excel. Really easy, but a bit of a lateral solution: Rather than trying to randomly select each item, just order them randomly instead: In another column adjacent to the column of user names, create a random number for each row&#8230;]]></description>
				<content:encoded><![CDATA[<p>I wanted to select 300 users at random from a row of 10,000 users in Excel. Really easy, but a bit of a lateral solution: Rather than trying to randomly select each item, just order them randomly instead:</p>
<ol>
<li>In another column adjacent to the column of user names, create a random number for each row (the formula I used was =RANDBETWEEN(1, 90000)). This won&#8217;t guarantee unique values for each item, but it doesn&#8217;t matter.</li>
<li>Copy the the column with the formulas and Paste As&#8230; Values to another adjacent column. This fixes the nubmers and stops them from updating.</li>
<li>Sort by this third column and take x users from the top. I chose the first 300.</li>
<li>Done</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.jfwhome.com/2012/03/15/selecting-x-items-at-random-from-a-column-in-excel/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>What is better than Bing?</title>
		<link>http://www.jfwhome.com/2010/06/30/what-is-better-than-bing/</link>
		<comments>http://www.jfwhome.com/2010/06/30/what-is-better-than-bing/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 13:38:29 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.jfwhome.com/?p=130</guid>
		<description><![CDATA[Easy: betterbing.com]]></description>
				<content:encoded><![CDATA[<p>Easy: <a href="http://www.betterbing.com">betterbing.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jfwhome.com/2010/06/30/what-is-better-than-bing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
