<?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>What&#039;s All This Brouhaha? &#187; Software</title>
	<atom:link href="http://whats.all.this.brouhaha.com/category/computing/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://whats.all.this.brouhaha.com</link>
	<description>miscellaneous musings and random rantings</description>
	<lastBuildDate>Tue, 31 Jan 2012 16:49:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Code to encode and decode Kansas City standard</title>
		<link>http://whats.all.this.brouhaha.com/2012/01/02/code-to-encode-and-decode-kansas-city-standard/</link>
		<comments>http://whats.all.this.brouhaha.com/2012/01/02/code-to-encode-and-decode-kansas-city-standard/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 05:52:57 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[RetroChallenge]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=950</guid>
		<description><![CDATA[As part of my Retrochallenge 2012WW project, I&#8217;m writing a pair of C programs to encode and decode Kansas City standard and Processor Technology CUTS audio cassette formats, as these are the formats supported on the Processor Technology Sol-20.  These &#8230; <a href="http://whats.all.this.brouhaha.com/2012/01/02/code-to-encode-and-decode-kansas-city-standard/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As part of my Retrochallenge 2012WW project, I&#8217;m writing a pair of C programs to encode and decode Kansas City standard and Processor Technology CUTS audio cassette formats, as these are the formats supported on the Processor Technology Sol-20.  These use FSK modulation, so it&#8217;s not too difficult.</p>
<p>In fact, FSK modulation is almost trivial, so I had the encoder written in less than an hour.</p>
<p>For decode, I decided to use the Goertzel algorithm, which is a simplified DFT that only looks for a single frequency.  I&#8217;ve used the Goertzel algorithm before on fixed-point DSP processors. There are app notes on using it for DTMF detection.  For FSK demodulation, I just use two Goertzels, one for the space frequency and one for the mark frequency.  The audio samples are dealt with in windows that are a fraction of a bit time, and the levels indicated by the two Goertzels are compared to decide which frequency predominates in that window.</p>
<p>Implementing the decoder program took a few hours last night and a few hours today.  It&#8217;s now basically working, at least for the perfectly sinusoidal waveforms generated by my encoder.  I still need to test it on some real tapes.</p>
<p>I&#8217;m currently using an 8 kHz sample rate for my audio files, although the encoder can be told to use a higher sample rate if desired, and the decoder will work with whatever sample rate the audio file uses.  Since the FSK frequencies are 1200 Hz and 2400 Hz, there should be no advantage to using a sample rate higher than 8 kHz.</p>
<p>I&#8217;m currently using libsndfile to read and write audio files.  I&#8217;d like to also use PortAudio to support direct access to the audio hardware, but I haven&#8217;t yet tried that.  While I&#8217;m doing the development on Linux, in principle the programs should work if compiled on Windows or MacOS.</p>
<p>I&#8217;ll release the programs under the GPLv3 license when I&#8217;ve verified that they work reasonably well.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2012/01/02/code-to-encode-and-decode-kansas-city-standard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C programming, the suboptimal way</title>
		<link>http://whats.all.this.brouhaha.com/2012/01/02/c-programming-the-suboptimal-way/</link>
		<comments>http://whats.all.this.brouhaha.com/2012/01/02/c-programming-the-suboptimal-way/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 05:38:47 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[RetroChallenge]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[The Suboptimal Way]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=948</guid>
		<description><![CDATA[Never name a C function read(), unless you&#8217;re trying to replace the system read() function.  Maybe not a problem on Windows, I&#8217;m not sure, but definitely bad news on Unix or Linux. I spent over an hour trying to figure &#8230; <a href="http://whats.all.this.brouhaha.com/2012/01/02/c-programming-the-suboptimal-way/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Never name a C function <tt>read()</tt>, unless you&#8217;re trying to replace the  system <tt>read()</tt> function.  Maybe not a problem on Windows, I&#8217;m not sure,  but definitely bad news on Unix or Linux.</p>
<p>I spent over an hour trying to figure out why libsndfile was claiming  that it couldn&#8217;t recognize the format of a perfectly good <tt>.wav</tt> file.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2012/01/02/c-programming-the-suboptimal-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More progress to report, after all</title>
		<link>http://whats.all.this.brouhaha.com/2011/07/31/more-progress-to-report-after-all/</link>
		<comments>http://whats.all.this.brouhaha.com/2011/07/31/more-progress-to-report-after-all/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 00:39:55 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Calculators]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[RetroChallenge]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=935</guid>
		<description><![CDATA[I fixed several bugs in my code, and now the DIY4 can display the directory of an SD card and read and write files. It&#8217;s not perfect, as the first I/O fails, but subsequent accesses succeed. I&#8217;m using the open &#8230; <a href="http://whats.all.this.brouhaha.com/2011/07/31/more-progress-to-report-after-all/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I fixed several bugs in my code, and now the DIY4 can display the directory of an SD card and read and write files. It&#8217;s not perfect, as the first I/O fails, but subsequent accesses succeed.</p>
<p>I&#8217;m using the open source <a title="FatFs Generic FAT File System Module" href="http://elm-chan.org/fsw/ff/00index_e.html" target="_blank">FatFs</a> code to implement the FAT filesystem.  It&#8217;s configured to work with two &#8220;drives&#8221;, the internal SPI FRAM chip in the DIY4, and the SD card.  I used the SD interface code from the &#8220;generic&#8221; example, with only minor changes necessary.</p>
<p>I still have to write a -41 microcode ROM to provide the equivalent of the HP-IL module&#8217;s mass storage commands, but talking to the SD card rather than HP-IL.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2011/07/31/more-progress-to-report-after-all/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Display contrast in DIY4</title>
		<link>http://whats.all.this.brouhaha.com/2011/07/26/display-contrast-in-diy4/</link>
		<comments>http://whats.all.this.brouhaha.com/2011/07/26/display-contrast-in-diy4/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 03:47:42 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Calculators]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[RetroChallenge]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=930</guid>
		<description><![CDATA[The DIYRPN 4 calculator uses a 16&#215;2 character LCD module. The choice of module was limited due to the desired physical width of the calculator. We chose a module made by Lumex. The module is specified for operation on a &#8230; <a href="http://whats.all.this.brouhaha.com/2011/07/26/display-contrast-in-diy4/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The DIYRPN 4 calculator uses a 16&#215;2 character LCD module. The choice of module was limited due to the desired physical width of the calculator. We chose a module made by Lumex. The module is specified for operation on a 5V supply, but we need to run it on 3.1V. This results in needing a negative bias voltage to get reasonable display contrast. We use a pulse width modulator (PWM) driving a voltage inverter to get a software-adjustable negative bias voltage. Getting the timer of the Energy Micro EFM32G &#8220;Gecko&#8221; microcontroller working in PWM mode was slightly trickier than expected.<span id="more-930"></span>We want the display to work while the processor is in a low-power state (not executing instructions), so we have to use the &#8220;low energy timer&#8221; of the EFM32G rather than the normal timer.  The low energy timer can be run from the low-frequency (typical 32.768 kHz) crystal oscillator (LFXO) or the internal low-frequency RC oscillator (LFRCO). Because we want to have precise timekeeping, we&#8217;re using the LFXO.</p>
<p>My first attempt at making the PWM work failed because I had overlooked a relatively obscure note in the EFM32G reference manual which observed that the REP0 (repeat 0) register needs to contain a non-zero value, even though it is not counting down in the PWM mode. Once I added code to initialize REP0 to 1 (or any non-zero value), I could read the timer value in software, and verify that it counts down, and when it underflows, reloads the appropriate value from the COMP0 register (which sets the PWM period). However, the actual PWM pin was never changing.</p>
<p>I spent a lot of time studying the LETIMER chapter of the reference manual, and corrected several bugs in my code, but still didn&#8217;t get the pin to change. Finally I looked at the LETIMER application note. The text of the application note didn&#8217;t help much, but I noticed that their overly complicated example code was initializing REP1 to a non-zero value, while the reference manual had only indicated that REP1 was used in some other auto-reload mode and did not indicate that it was used or necessary for PWM.</p>
<p>I added a few lines to initialize REP1 to 1, and the PWM started working.  Now I can adjust the display contrast, from too light to too dark, in 16 steps. Fortunately there are midrange values that are somewhat reasonable.</p>
<p>Both the reference manual and the application note could certainly use some more thorough explanation of the requirements to make PWM mode work.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2011/07/26/display-contrast-in-diy4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keyboard scanning on the DIY4</title>
		<link>http://whats.all.this.brouhaha.com/2011/07/25/keyboard-scanning-on-the-diy4/</link>
		<comments>http://whats.all.this.brouhaha.com/2011/07/25/keyboard-scanning-on-the-diy4/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 05:39:07 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Calculators]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[RetroChallenge]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=928</guid>
		<description><![CDATA[I tracked down a bug in the keyboard scanning of the DIY4 today. I thought there needed to be a delay in the scan routine between writing the scan lines and reading the return lines, but it turns out that &#8230; <a href="http://whats.all.this.brouhaha.com/2011/07/25/keyboard-scanning-on-the-diy4/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I tracked down a bug in the keyboard scanning of the DIY4 today. I thought there needed to be a delay in the scan routine between writing the scan lines and reading the return lines, but it turns out that another delay is needed also.<span id="more-928"></span>The Energy Micro EFM32G &#8220;Gecko&#8221; family of microcontrollers have very flexible GPIO port configuration.  Each pin can have an independently selected mode, of which there are many choices.  Output drive is configurable, and inputs can have noise filtering. Outputs can be open source or open drain, with or without pulldowns or pullups. Inputs can also have pulldowns or pullups.</p>
<p>For the keyboard, I program the scan lines as open-drain outputs with pullups, and the return lines as inputs with pullups.  What I found was that my keyboard scan code was reliable at 1 MHz, but had subtle problems at 7 MHz and not-so-subtle problems at 14 MHz and higher.</p>
<p>What I figured out with Richard Ottosen&#8217;s help is that because I&#8217;m using open-drain outputs for the scan lines, when I stop driving one scan line low, and start driving the next, the first line takes longer than I anticipated to get pulled high.  It needs to rise from very close to 0V to 0.7 Vdd, 2.17V, before I drive the next scan line low.</p>
<p>The data sheet gives a typical pullup value of 40 Kohms, but doesn&#8217;t specify a minimum or maximum. To be conservative, we&#8217;ll assume a maximum of 100 Kohms. If we also assume that the total capacitance on the line is 10 pF, that gives a time constant of 1 us.  To reach 3/4 of Vdd will require about 1.4 time constants, so I need to delay 1.4 us between releasing one scan line and driving the next.  At 14 MHz that is about 20 instructions, so for now I&#8217;ve put in 20 NOP instructions. That fixed both the obvious keyboard scan problems, and a not-so-obvious problem where the ON key would terminate a running program, but the R/S key would not.</p>
<p>A better solution might be upon releasing a scan line, to briefly change the pin mode from open drain with pullup to totem pole actively driven high, then back again. That would pull up the line fast enough that it would be essentially processor speed independent.</p>
<p>In the course of testing this we also made some other observations:</p>
<ul>
<li>The bit-banging SPI for the FRAM works at 28 MHz with no additional delays required.</li>
<li>The FRAM port configuration doesn&#8217;t raise the deep sleep mode current.</li>
<li>Some of the other recent keyboard scanning changes, namely not raising the processor speed unless at least one key is pressed, reduces the deep sleep mode current from 20 uA to 10 uA.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2011/07/25/keyboard-scanning-on-the-diy4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bit-banging FRAM on the DIYRPN 4</title>
		<link>http://whats.all.this.brouhaha.com/2011/07/25/bit-banging-fram-on-the-diyrpn-4/</link>
		<comments>http://whats.all.this.brouhaha.com/2011/07/25/bit-banging-fram-on-the-diyrpn-4/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 09:41:37 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Calculators]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[RetroChallenge]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=924</guid>
		<description><![CDATA[I&#8217;ve written code that successfully reads the vendor/device ID and serial number from a Ramtron FM25VN10 SPI FRAM chip. I haven&#8217;t yet read or written data. The code is currently using GPIO bit-banging, but the hardware is designed to allow &#8230; <a href="http://whats.all.this.brouhaha.com/2011/07/25/bit-banging-fram-on-the-diyrpn-4/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve written code that successfully reads the vendor/device ID and serial number from a Ramtron FM25VN10 SPI FRAM chip. I haven&#8217;t yet read or written data. The code is currently using GPIO bit-banging, but the hardware is designed to allow the USART to be used in SPI mode, so I may switch to that in the future.<span id="more-924"></span></p>
<p>This is on the DIYRPN 4 hardware, which is a calculator using an Energy Micro EFM32G280F128 microcontroller based on an ARM Cortex-M3 core.  The calculator is running a microcode-level simulation of an HP-41C.  At a CPU clock of approximately 14 MHz (using an uncalibrated internal RC oscillator), it runs roughly 14 times faster than an actual HP-41C. There is a lot of room for optimization of the simulator code.  It is also possible to run the chip at 21 MHz or 28 MHz, though that introduces a wait state for the internal flash memory.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2011/07/25/bit-banging-fram-on-the-diyrpn-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HP-41 card reader bug</title>
		<link>http://whats.all.this.brouhaha.com/2011/07/25/hp-41-card-reader-bug/</link>
		<comments>http://whats.all.this.brouhaha.com/2011/07/25/hp-41-card-reader-bug/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 09:32:48 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Calculators]]></category>
		<category><![CDATA[Nonpareil]]></category>
		<category><![CDATA[RetroChallenge]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=921</guid>
		<description><![CDATA[It occurred to me while studying simulator traces that it might be interesting to investigate a bug in early versions of the 82104A card reader for the HP-41C calculator. The bug was fairly esoteric and easily avoided, as it seemed &#8230; <a href="http://whats.all.this.brouhaha.com/2011/07/25/hp-41-card-reader-bug/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It occurred to me while studying simulator traces that it might be interesting to investigate a bug in early versions of the 82104A card reader for the HP-41C calculator. The bug was fairly esoteric and easily avoided, as it seemed to occur when backspacing over a four-digit numeric prompt after EEX and two digits have been entered. (This is somewhat reminiscent of the famous <a title="Therac-25" href="http://en.wikipedia.org/wiki/Therac-25" target="_blank">Therac-25</a> bug, though without the fatal consequences.)<span id="more-921"></span></p>
<p>The card reader bug is present in the 1E version of the  card reader (and probably 1D), and fixed in the 1G version. I haven&#8217;t  got a 1D or 1F to check.  I discovered the bug around 1981, and I think I  saw it mentioned by someone else in the PPC Journal at one point.</p>
<p>With the card reader plugged in, press the key sequence</p>
<pre>GTO . EEX 0 0 backspace backspace</pre>
<p>What you should see after that is</p>
<pre>GTO .1__</pre>
<p>If you have the bug, the display rotates so it reads</p>
<pre>0      GTO .1</pre>
<p>From study of a instruction trace, it appears that the bug is due to the  card reader ROM&#8217;s I/O service poll routine violating one of the  requirements of the mainframe polling code.  From the mainframe source  code:</p>
<blockquote><p>All subroutine levels are available except in I/O service entry. If PKSEQ is set then I/O service routines must either preserve three subroutine returns on the subroutine stack or else terminate the partial key sequence.</p></blockquote>
<p>The CR-1E I/O service poll code uses two levels of subroutines.  Perhaps  the CR-1G ROM was changed to not need two levels of subroutines, though  I haven&#8217;t yet disassembled the code to determine what the actual  changes are.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2011/07/25/hp-41-card-reader-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HP-41CV ROM set version HFF bug fix</title>
		<link>http://whats.all.this.brouhaha.com/2011/07/25/hp-41cv-rom-set-version-hff-bug-fix/</link>
		<comments>http://whats.all.this.brouhaha.com/2011/07/25/hp-41cv-rom-set-version-hff-bug-fix/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 09:22:01 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Calculators]]></category>
		<category><![CDATA[Nonpareil]]></category>
		<category><![CDATA[RetroChallenge]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=914</guid>
		<description><![CDATA[As I was studying HP-41CV microcode running in simulation, I finally uncovered what one of the bug fixes in the HFF ROM version does. This has been a mystery for many years, though there&#8217;s still one more unexplained change relative &#8230; <a href="http://whats.all.this.brouhaha.com/2011/07/25/hp-41cv-rom-set-version-hff-bug-fix/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As I was studying HP-41CV microcode running in simulation, I finally uncovered what one of the bug fixes in the HFF ROM version does. This has been a mystery for many years, though there&#8217;s still one more unexplained change relative to the earlier GFF version.<span id="more-914"></span></p>
<p>For the first half of the product life of the HP-41CV, and the tail  end of the product life of the HP-41C, the mainframe ROMs used were the  &#8220;GFF&#8221; ROMs, which fixed most of the serious known bugs of earlier ROMs.  Some of those bug fixes upset early synthetic programming fans, such as  fixing &#8220;bug 2&#8243; which allowed program memory and status registers to be  accessed by addresses that wrapped around, and &#8220;bug 3&#8243; which allowed  altering system flags.  Of course, other methods were developed for  doing those things without reliance on bug 2 and bug 3.</p>
<p>Around late 1983, the HP-41CV changed to using the &#8220;HFF&#8221; ROM set. As far  as I know, there is no published explanation of the difference between  ROM 0 revisions G and H.  Aside from the version number and checksum,  there are two actual changes, at address range 01c9..01f3, and the  single word at 081a.  I haven&#8217;t figured out the latter, but I&#8217;ve  discovered what the 01c9 change does.</p>
<p>The HP-41 mainframe ROMs have code to support expansion ROMs using  &#8220;buffers&#8221; of registers allocated in main RAM, just after the key  assignments. The first register of a buffer contains two copies of the  buffer number, used by an expansion ROM to identify the buffer it owns,  and a buffer length which is used to locate the next buffer, or the end  of the buffers.</p>
<p>There was a longstanding bug in the mainframe ROMs which would cause a  hard lockup if the length of a buffer was mismarked as zero. The code to  scan the buffers would sit in a tight loop looking at the same  zero-length buffer forever. This situation could easily be caused by  buggy synthetic programs. The ON-backspace trick wouldn&#8217;t recover from  this, because the buffer check happened before the ON-backspace check.   Recovery generally requires removing the batteries until the RAM  contents are lost.</p>
<p>The code change at 01c9 in the 0H ROM, and also the 0N ROM of the 41CX,  fixes this bug!  They reversed the order of the tests, so that the  ON-backspace test is done before the buffer scan, so that it can avoid  the zero-length buffer lockup.</p>
<p>It has been reported that the 41CV with HFF ROMs may have the &#8220;buzz  mode&#8221; of the 41CX (PPCJ v10n9p24), but I don&#8217;t have a 41CV with HFF ROMs  so I can&#8217;t confirm that.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2011/07/25/hp-41cv-rom-set-version-hff-bug-fix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>misc. hints on debugging Linux power management</title>
		<link>http://whats.all.this.brouhaha.com/2011/06/08/misc-hints-on-debugging-linux-power-management/</link>
		<comments>http://whats.all.this.brouhaha.com/2011/06/08/misc-hints-on-debugging-linux-power-management/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 19:47:28 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=879</guid>
		<description><![CDATA[Dump BIOS DMI table: dmidecode Dump devkit power status:  devkit-power --dump or upower --dump Enable power manager debugging, useful before suspend:  echo 1 &#62;/sys/power/pm_trace look at log file: /var/log/pm-suspend.log]]></description>
			<content:encoded><![CDATA[<ol>
<li>Dump BIOS DMI table: <tt>dmidecode</tt></li>
<li>Dump devkit power status:  <tt>devkit-power --dump</tt> or <tt>upower --dump<br />
</tt></li>
<li>Enable power manager debugging, useful before suspend:  <tt>echo 1 &gt;/sys/power/pm_trace</tt></li>
<li>look at log file: <tt>/var/log/pm-suspend.log</tt></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2011/06/08/misc-hints-on-debugging-linux-power-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>misc. Linux notes</title>
		<link>http://whats.all.this.brouhaha.com/2011/06/08/misc-linux-notes/</link>
		<comments>http://whats.all.this.brouhaha.com/2011/06/08/misc-linux-notes/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 07:25:42 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=877</guid>
		<description><![CDATA[Things I&#8217;ve learned today that I&#8217;ll probably need to know later, after I&#8217;ve had a chance to forget them: GNOME 3 was designed by idiots for idiots.  They&#8217;ve tried to make it completely drool-proof, and in the process made it &#8230; <a href="http://whats.all.this.brouhaha.com/2011/06/08/misc-linux-notes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Things I&#8217;ve learned today that I&#8217;ll probably need to know later, after I&#8217;ve had a chance to forget them:</p>
<ol>
<li>GNOME 3 was designed by idiots for idiots.  They&#8217;ve tried to make it completely drool-proof, and in the process made it unusable by anyone with half a clue.  Use xfce instead.</li>
<li>To make suspend work on 2.6.35 kernel (or newer?): put <tt>acpi_sleep=nonvs</tt> on kernel command line.  Necessary for many laptops, but not all.  Definitely necessary on the Sony VPCEB17FX.  <a title="Bug 16396 - [bisected] resume from suspend freezes system " href="https://bugzilla.kernel.org/show_bug.cgi?id=16396" target="_blank">https://bugzilla.kernel.org/show_bug.cgi?id=16396</a> <a title="Kernel on F14 needs acpi_sleep=nonvs to resume from suspend correctly" href="https://bugzilla.redhat.com/show_bug.cgi?id=641789" target="_blank">https://bugzilla.redhat.com/show_bug.cgi?id=641789</a></li>
<li>To find the UUIDs of your partitions: <tt>blkid</tt></li>
<li>To display the LUKS header of an encrypted partition: <tt>cryptsetup luksDump /dev/sda6</tt></li>
<li>To boot a Fedora live CD such that it all gets loaded into RAM, and the CD is ejected:  add <tt>live_ram</tt> to the kernel command line.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2011/06/08/misc-linux-notes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

