<?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>The Memoirs of Jim &#039;ung</title>
	<atom:link href="http://www.jimhung.co.uk/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.jimhung.co.uk</link>
	<description>...even less interesting than it sounds.</description>
	<lastBuildDate>Sun, 27 Jan 2013 21:08:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Syma 107G Controller Library</title>
		<link>http://www.jimhung.co.uk/?p=1138</link>
		<comments>http://www.jimhung.co.uk/?p=1138#comments</comments>
		<pubDate>Sun, 27 Jan 2013 05:46:07 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Tech Stuff]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Protocol]]></category>
		<category><![CDATA[RC helicopter]]></category>
		<category><![CDATA[Syma 107]]></category>
		<category><![CDATA[syma control library]]></category>
		<category><![CDATA[symalib]]></category>

		<guid isPermaLink="false">http://www.jimhung.co.uk/?p=1138</guid>
		<description><![CDATA[After my work on the Syma 107G was featured on Hackaday, [Maksim] emailed me to talk about writing up a programming library for the Syma 107 control protocol that would allow someone to control an RC boat, car, etc… with the S107T2 controller. I thought this was a cool idea, so I gave it a shot [...]]]></description>
				<content:encoded><![CDATA[<p>After my work on the Syma 107G was featured on <a href="http://hackaday.com/2012/12/08/more-fun-with-syma-107-reverse-engineering/">Hackaday</a>, [Maksim] emailed me to talk about writing up a programming library for the Syma 107 control protocol that would allow someone to control an RC boat, car, etc… with the S107T2 controller. I thought this was a cool idea, so I gave it a shot — here’s the lowdown on <strong>SymaLib</strong>.<br />
<a href="http://www.jimhung.co.uk/wp-content/uploads/2013/01/SymaLib_example.jpg"><img class="aligncenter size-full wp-image-1128" alt="SymaLib_example" src="http://www.jimhung.co.uk/wp-content/uploads/2013/01/SymaLib_example.jpg" width="555" height="453" /></a></p>
<p style="text-align: left;"><span id="more-1138"></span></p>
<h4 style="text-align: left;">Download &amp; Requirements</h4>
<p>Get the <a href="http://www.jimhung.co.uk/wp-content/uploads/2013/01/SymaLib.v0.1.zip">SymaLib library (v0.1) here</a>. The library was written for the Arduino IDE v1.1 and is designed for use with a sketch similar to Adafruit’s IR Commander sketch (<a href="http://learn.adafruit.com/ir-sensor/reading-ir-commands">reference</a>, <a href="https://github.com/adafruit/IR-Commander">github</a>).</p>
<h4>Details</h4>
<p style="text-align: left;">I started with the excellent<a href="https://github.com/adafruit/IR-Commander"> Adafruit Industries IR Commander</a> sketch as it is easy to understand and takes care of populating an array with the on/off pulse lengths for me. With this raw material, all the SymaLib library has to take care of is parse the received pulse lengths into their respective bit-wise values and provide a series of methods to get the parsed values of the handset’s controls.</p>
<p style="text-align: left;">Version 0.1 currently allows you to parse the 32-bit control packets from the S107T2 controller (described in my protocol spec: <a href="http://www.jimhung.co.uk/wp-content/uploads/2013/01/Syma107_ProtocolSpec_v1.txt">here</a>) and return each control value as an integer.</p>
<h4 style="text-align: left;">Example</h4>
<pre class="brush: arduino; title: ; notranslate">
/*
SymaLib Library Example v0.1 by Jim Hung (www.jimhung.com)

 This example code is designed to demonstrate the usage of the SymaLib
 to decode control signals from a S107T2 RC helicopter controller.

 Based on 'Raw IR commander' by Ladyada:

   &quot;This sketch/program uses the Arduno and a PNA4602 to
   decode IR received.  It then attempts to match it to a previously
   recorded IR signal

   Code is public domain, check out www.ladyada.net and adafruit.com
   for more tutorials!&quot;
*/

#include  // include the SymaLib library

#define IRpin_PIN      PIND
#define IRpin          2

#define MAXPULSE 2000
#define NUMPULSES 50

#define RESOLUTION 20
#define FUZZINESS 30

uint16_t pulses[NUMPULSES][2];  // pair is high and low pulse
uint8_t currentpulse = 0; // index for pulses we're storing

SymaLib protocolparser; // declare our SymaLib object

void setup(void) {

  Serial.begin(9600);
  Serial.println(&quot;Ready to decode IR!&quot;);
}

void loop(void) {

  int numberpulses;
  String ctrldata = &quot;&quot;;

  // Listen for IR signals and populate the array of pulse lengths

  numberpulses = listenForIR();

  // Give the SymaLib object the pulse array to parse. If it's a valid Syma107
  // control packet, SymaLib returns boolean True.

  boolean result = protocolparser.setPulseListParse(pulses,numberpulses,RESOLUTION,FUZZINESS);

  if (result) {

	// Read the controller values and do whatever you need to with them.

	  // This example prints out the integer values for each control:

    Serial.print(&quot; Yaw: &quot;);
    Serial.print(protocolparser.getYawDec());
    Serial.print(&quot;\tPitch: &quot;);
    Serial.print(protocolparser.getPitchDec());
    Serial.print(&quot;\tChannel: &quot;);
    Serial.print(protocolparser.getChanDec());
    Serial.print(&quot;\tThrottle: &quot;);
    Serial.print(protocolparser.getThrottleDec());
    Serial.print(&quot;\tTrim: &quot;);
    Serial.print(protocolparser.getTrimDec());
    Serial.print(&quot;\n&quot;);

	  // This example prints out the binary values for the 32-bit control packet:

    Serial.println(protocolparser.getCtrlPacketBin());

  }
  delay(100);
}

int listenForIR(void) {
  currentpulse = 0;

  while (1) {
    uint16_t highpulse, lowpulse;
    highpulse = lowpulse = 0;

    while (IRpin_PIN &amp; _BV(IRpin)) {

       highpulse++;
       delayMicroseconds(RESOLUTION);

       if (((highpulse &gt;= MAXPULSE) &amp;&amp; (currentpulse != 0))|| currentpulse == NUMPULSES) {
         return currentpulse;
       }
    }

    pulses[currentpulse][0] = highpulse;

    while (! (IRpin_PIN &amp; _BV(IRpin))) {

       lowpulse++;
       delayMicroseconds(RESOLUTION);

        if (((lowpulse &gt;= MAXPULSE)  &amp;&amp; (currentpulse != 0))|| currentpulse == NUMPULSES) {
         return currentpulse;
       }
    }
    pulses[currentpulse][1] = lowpulse;

    currentpulse++;
  }
}
</pre>
<h4>Library Reference</h4>
<p>Here are the methods provided by the SymaLib library:</p>
<p><strong>SymaLib()</strong></p>
<p style="padding-left: 30px;"><em>Constructor</em>. No arguments — initializes control byte array.</p>
<p><strong>setPulseListParse()</strong></p>
<p style="padding-left: 30px;">Returns: <em>Boolean</em></p>
<p style="padding-left: 30px;">Arguments:</p>
<p style="padding-left: 60px;"><em>uint16_t</em> pulses[][2] — The pulse array populated by the ‘listenForIR’-like method.</p>
<p style="padding-left: 60px;"><em> int&amp;</em> numpulses — The number of pulses heard by the ‘listenForIR’-like method.</p>
<p style="padding-left: 60px;"><em>int</em> resolution — The RESOLUTION constant used to calibrate the IR listener.</p>
<p style="padding-left: 60px;"><em>int</em> fuzziness — The FUZZINESS constant used to calibrate the IR listener.</p>
<p style="padding-left: 30px;">Description:</p>
<p style="padding-left: 60px;">This method parses the pulse-array and stores it as an array of integers, either 1 or 0. This array is the basis of the object’s Get methods.</p>
<p><strong>getYawDec()</strong></p>
<p style="padding-left: 30px;">Returns: <em>Int</em></p>
<p style="padding-left: 30px;">Arguments: None.</p>
<p style="padding-left: 30px;">Description:</p>
<p style="padding-left: 60px;">Returns an integer of the decimal value of the Yaw control.</p>
<p><strong>getPitchDec()</strong></p>
<p style="padding-left: 30px;">Returns: <em>Int</em></p>
<p style="padding-left: 30px;">Arguments: None.</p>
<p style="padding-left: 30px;">Description:</p>
<p style="padding-left: 60px;">Returns an integer of the decimal value of the Pitch control.</p>
<p><strong>getChanDec()</strong></p>
<p style="padding-left: 30px;">Returns: <em>Int</em></p>
<p style="padding-left: 30px;">Arguments: None.</p>
<p style="padding-left: 30px;">Description:</p>
<p style="padding-left: 60px;">Returns an integer of the decimal value of the channel switch.</p>
<p><strong>getThrottleDec()</strong></p>
<p style="padding-left: 30px;">Returns: <em>Int</em></p>
<p style="padding-left: 30px;">Arguments: None.</p>
<p style="padding-left: 30px;">Description:</p>
<p style="padding-left: 60px;">Returns an integer of the decimal value of the Throttle control.</p>
<p><strong>getTrimDec()</strong></p>
<p style="padding-left: 30px;">Returns: <em>Int</em></p>
<p style="padding-left: 30px;">Arguments: None.</p>
<p style="padding-left: 30px;">Description:</p>
<p style="padding-left: 60px;">Returns an integer of the decimal value of the Trim control.</p>
<p><strong>getCtrlPacketBin()</strong></p>
<p style="padding-left: 30px;">Returns: <em>String</em></p>
<p style="padding-left: 30px;">Arguments: None.</p>
<p style="padding-left: 30px;">Description:</p>
<p style="padding-left: 60px;">Returns a String of ‘1’ and ‘0’s representing the 32-bit control packet<span style="text-indent: 1em; line-height: 1.5;">. Useful for debugging.</span></p>
<h4>Conclusion</h4>
<p>This is the first Arduino library I’ve ever written (hopefully not the last!) and I hope it is useful for other hackers. [Maksim]‘s idea was cool and I’d love to see any projects that end up using it. Let me know in the comments!</p>
<p>Take care,</p>
<p>Jim</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimhung.co.uk/?feed=rss2&#038;p=1138</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reverse-Engineering a Syma 107 RC Helicopter</title>
		<link>http://www.jimhung.co.uk/?p=901</link>
		<comments>http://www.jimhung.co.uk/?p=901#comments</comments>
		<pubDate>Sat, 08 Dec 2012 09:49:30 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Hackaday]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Infrared]]></category>
		<category><![CDATA[Reverse Engineering]]></category>
		<category><![CDATA[Saleae Logic]]></category>
		<category><![CDATA[Syma 107]]></category>

		<guid isPermaLink="false">http://www.jimhung.co.uk/?p=901</guid>
		<description><![CDATA[The Syma 107 RC helicopter is a pretty great gadget, all things considered — it’s cheap, fun, and ridiculously good for the price. It’s also a spectacular gadget for fledgling hackers. ** 1-26-2013 UPDATE — I’ve written up a full protocol specification for the Syma 107G — If you are here looking for a purely [...]]]></description>
				<content:encoded><![CDATA[<p>The Syma 107 RC helicopter is a pretty great gadget, all things considered — it’s cheap, fun, and ridiculously good for the price. It’s also a spectacular gadget for fledgling hackers.</p>
<p style="text-align: center;"><a href="http://www.jimhung.co.uk/wp-content/uploads/2012/12/1.jpg"><img class="aligncenter  wp-image-923" title="1" alt="" src="http://www.jimhung.co.uk/wp-content/uploads/2012/12/1.jpg" width="504" height="378" /></a></p>
<p><em><strong>** 1-26-2013 UPDATE — I’ve written up a full protocol specification for the Syma 107G — If you are here looking for a purely technical description of the protocol, look <a title="Protocol Library" href="http://www.jimhung.co.uk/?page_id=1076">here</a>** </strong></em></p>
<p>I first discovered a series of articles about this RC Heli on <a href="http://hackaday.com/?s=syma+107">Hackaday</a>, where a number of people had developed proof-of-concept controllers or jammers based on a decoded IR protocol for controlling the chopper. As it happened, these Heli’s were a bit of a fad in our lab and we had a number of them lying around (both alive and dead) so naturally I decided to have a go myself. I initially created a prototype Arduino IR controller that uses Processing to provide a front-end for one helicopter, then expanded it to control two similtaneously by switching the channel bits rapidly. I won’t go on too much about this here because what I actually want to talk about is a quirk in the protocol I decoded.</p>
<p>So there’s a decent body of work in the hacker and RC communities to decode the protocol used by the Syma 107 — here are a couple:</p>
<p><a href="http://www.kerrywong.com/2012/08/27/reverse-engineering-the-syma-s107g-ir-protocol/">This post [Kerry Wong]</a> is a really great read and a study in methodical analysis in reverse engineering.</p>
<p><a href="http://hamsterworks.co.nz/mediawiki/index.php/FPGAheli">This site [Hamsterworks]</a> is also a great practical guide to reverse engineering the protocol and I actually used these timings for my own controller a while back.</p>
<p>One thing these projects both have in common is that they arrived at a protocol specification that uses 32-bits (4 bytes).</p>
<h3>Reverse-Engineering the controller</h3>
<p>So enter my new <a href="http://www.saleae.com/logic">Saleae Logic Analyser </a>. I’ve never used a logic analyser or oscilloscope before, so I wanted to start with a project that I knew was possible and would have an output that I already understood (or so I thought…).</p>
<p style="text-align: center;"><a href="http://www.jimhung.co.uk/wp-content/uploads/2012/12/Logic.jpg"><img class="aligncenter  wp-image-918" title="Saleae Logic" alt="" src="http://www.jimhung.co.uk/wp-content/uploads/2012/12/Logic.jpg" width="480" height="360" /></a></p>
<p><em>As an aside, the Saleae Logic is really an excellent tool — I had read a lot about it and there are any number of superlatives floating around, but I must say it is EXACTLY what I was looking for. Great price-point, loads of features and the software is superb. If you are curious about logic analysers and don’t want to spend too much, I really recommend the Logic — it’s been great for me so far.</em></p>
<p>I noticed immediately that the board in my controller was markedly different than the ones pictured on either the above links. Mine has way more components for a start:</p>
<p style="text-align: center;"><a href="http://www.jimhung.co.uk/wp-content/uploads/2012/12/circuitboard_with_logic.jpg"><img class="aligncenter  wp-image-927" title="circuitboard_with_logic" alt="" src="http://www.jimhung.co.uk/wp-content/uploads/2012/12/circuitboard_with_logic.jpg" width="480" height="360" /></a></p>
<p>I began by using a multimeter to ensure that the unlabelled IC wasn’t operating at a voltage higher than 5v and wouldn’t accidentally damage the Logic analyser. Everything was fine so I began probing the pins. Here is a rough guess at the pinout (note: I only really care about the pin that drives the IR LED transmitter circuit so I never looked into confirming how the control input works, etc…):</p>
<p style="text-align: center;"><a href="http://www.jimhung.co.uk/wp-content/uploads/2012/12/IC_Pinout.jpg"><img class="aligncenter  wp-image-932" title="IC_Pinout" alt="" src="http://www.jimhung.co.uk/wp-content/uploads/2012/12/IC_Pinout.jpg" width="480" height="309" /></a></p>
<p>Now that I know which pin the transmission signal is output on (pin 8), I can sniff it and see the 32-bit control protocol right? Well, almost. I should explain a little about the protocol for those who are unfamiliar.</p>
<h3>Decoding the Physical Packet format</h3>
<p>The following timings are based on observations I’ve made on a sample of control packets captured with the logic analyser. Here’s a picture of the full packet:</p>
<p style="text-align: center;"><a href="http://www.jimhung.co.uk/wp-content/uploads/2012/12/Example_Packet_3.jpg"><img class="aligncenter  wp-image-942" title="Example_Packet_3" alt="" src="http://www.jimhung.co.uk/wp-content/uploads/2012/12/Example_Packet_3.jpg" width="563" height="74" /></a></p>
<h5><strong>Carrier Modulation</strong></h5>
<p><a href="http://www.jimhung.co.uk/wp-content/uploads/2012/12/Carrier_Wave.jpg"><img class="alignleft  wp-image-947" title="Carrier_Wave" alt="" src="http://www.jimhung.co.uk/wp-content/uploads/2012/12/Carrier_Wave-300x100.jpg" width="240" height="80" /></a></p>
<p style="text-align: left;"><strong>Modulation Freq:</strong> 38khz <em>(50% duty cycle, 26us period, so 13us high/13us low)</em></p>
<p style="text-align: left;">38khz is a common carrier frequency for consumer Infrared communications. For the uninitiated, the white blocks in the main image above are made up of the high-frequency oscillations you can see on the left. This is usually done so that various transmitters that use the same medium (in this case the Infrared light spectrum — probably around the 940nm wavelength) can transmit on a different carrier modulation frequency and not interfere with the others’ transmissions (this is called <a href="http://en.wikipedia.org/wiki/Frequency_division_multiplexing">Frequency Division Multiplexing</a>).</p>
<h5><strong>Symbols</strong></h5>
<p>There are 4 types of symbol in the packet format: Preamble, Zero (“0”), One (“1”), and a footer:</p>
<p><img class="alignleft  wp-image-950" title="Preamble" alt="" src="http://www.jimhung.co.uk/wp-content/uploads/2012/12/Preamble.jpg" width="208" height="80" /></p>
<h5>Preamble:</h5>
<p><strong>High:</strong> 2ms (2000us) /<strong> Low:</strong> 2ms (2000us) / <strong>Period:</strong> 4ms (2000us)</p>
<p> </p>
<h5><img class="size-full wp-image-958 alignleft" title="Zero" alt="" src="http://www.jimhung.co.uk/wp-content/uploads/2012/12/Zero.jpg" width="118" height="99" /></h5>
<h5>Zero:</h5>
<p><strong>High</strong>: 0.3ms (300us) / <strong>Low:</strong> 0.3 (300us) / <strong>Period:</strong> 0.6ms (600us)</p>
<p> </p>
<p> </p>
<h5><img class="size-full wp-image-969 alignleft" title="One" alt="" src="http://www.jimhung.co.uk/wp-content/uploads/2012/12/One.jpg" width="123" height="100" /></h5>
<h5>One:</h5>
<p><strong>High:</strong> 0.3ms (300us) / <strong>Low:</strong> 0.7ms (700ms) / <strong>Period:</strong> 1ms (1000us)</p>
<p> </p>
<p> </p>
<p><a href="http://www.jimhung.co.uk/wp-content/uploads/2012/12/footer.jpg"><img class="alignleft size-full wp-image-976" title="footer" alt="" src="http://www.jimhung.co.uk/wp-content/uploads/2012/12/footer.jpg" width="174" height="98" /></a></p>
<h5>Footer:</h5>
<p><strong>High:</strong> 0.3ms (300us)</p>
<p>I almost missed this, but there is in fact a footer pulse at the end of the packet 300 microseconds long followed by a long period of low signal until the next packet header.</p>
<h5><strong>Channels</strong></h5>
<p>The Syma 107G controller appears to support 2 “channels” so that two pilots can fly their heli’s at the same time without interfering with each other. Examining the behaviour of the transmitter when switching channels indicated that the only differences between the two is a) the packet transmission interval and b) a special bit in the control packet is flipped (more on this later). The image below shows the differences in packet Tx intervals when the channel select slider is flipped (channel 1 of the Logic analyser):</p>
<p><a href="http://www.jimhung.co.uk/wp-content/uploads/2012/12/ChannelFlip.jpg"><img class="wp-image-982 aligncenter" title="ChannelFlip" alt="" src="http://www.jimhung.co.uk/wp-content/uploads/2012/12/ChannelFlip.jpg" width="510" height="146" /></a></p>
<p>The transmit interval for Channel A is <strong>120ms</strong> (start of a packet header to the start of the next packet), or 8.33 packets per second. The transmit interval for Channel B is <strong>180ms</strong>, or 5.55 packets per second.</p>
<p>So surprisingly, the carrier modulation frequency remains the same on both channels — not the most robust design, huh? I suspect the reason the transmit interval is increased is to reduce the likelihood of a collision of control packets from two controllers — if a packet collision does occur, the next control frames from each controller will almost definitely be out of phase with each other, so the chopper shouldn’t just fall out of the air (though in my experience, they do get a bit clumsy when you have two going at once…).</p>
<h3>The Control Packet Structure</h3>
<p>So now that we understand what a packet looks like, let’s decode one and have a look at it at a higher level:</p>
<p style="text-align: center;"><a href="http://www.jimhung.co.uk/wp-content/uploads/2012/12/packet_decode.jpg"><img class="aligncenter  wp-image-1000" title="packet_decode" alt="" src="http://www.jimhung.co.uk/wp-content/uploads/2012/12/packet_decode.jpg" width="487" height="73" /></a></p>
<p style="text-align: center;"><em>(Click for a better look)</em></p>
<p> And here it is again:</p>
<pre>         |     byte 0    |     byte 1    |     byte 2    |
          0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 0 0 1 0
         |  Decimal: 63  |  Decimal: 63  |  Decimal: 82  |</pre>
<p>So we have a header, followed by 3 bytes (24 bits) of information, plus a footer pulse that makes up a control packet. Now lets figure out what the data means by trying various permutations of the controls (zero throttle, full throttle, 100% left turn, 100% right turn, etc…) and see how the data changes:</p>
<pre>Type:         Data:                     Decimal Values (byte #):
100% Throttle 001111110011111101111111  (0): 63  (1): 63  (2): 127
50% Throttle  001111110011111100111111  (0): 63  (1): 63  (2): 63
100% Left     011111100011111101000110  (0): 126 (1): 63  (2): 70
100% Right    000001100011111101001011  (0): 6   (1): 63  (2): 75
100% Forward  001111110000000001010100  (0): 63  (1): 0   (2): 84
100% Back     001111110111011101010100  (0): 63  (1): 119 (2): 84
Channel A     0011111100111111<strong><span style="color: #ff0000;">0</span></strong>1010010  (0): 63  (1): 63  (2): 82
Channel B     0011111100111111<strong><span style="color: #ff0000;">1</span></strong>1010010  (0): 63  (1): 63  (2): 210</pre>
<p><em> </em></p>
<p><em>Note: The controller requires that there be at least some throttle applied before it will send any packets, which is why byte 2 appears to change a little on the other tests.</em></p>
<p>From this information, we can make the following assumptions:</p>
<h4>Byte 0</h4>
<address>- Byte 0 represents the Yaw (left/right) control.<br />
– Byte 0 has a range of 0–127.<br />
– 0–62 is a right turn, 63 is centre (default) value, 64–127 is a left turn.<br />
– the first bit, bit 0, appears to always be 0.</address>
<h4>Byte 1</h4>
<address>- Byte 1 represents the Pitch (forward/backwards) control.</address>
<address>- Byte 1 has a range of 0–127.</address>
<address>- 0–62 is pitch forward, 63 is centre (default) value, 64–127 is pitch backwards.</address>
<address>- the first bit appears to always be 0.</address>
<h4>Byte 2</h4>
<address>- Byte 2 represents throttle and channel.</address>
<address>- Byte 2 (throttle) has a range of 0–127.</address>
<address>- 0 is 0% throttle, 127 is 100% throttle.</address>
<address>- the most significant bit of Byte 2 (highlighted <strong><span style="color: #ff0000;">red</span></strong> above) indicates which Channel is selected. 0 for Channel A, 1 for Channel B. This is how we can have 2 channels without changing the carrier frequency.</address>
<h3>The Mystery of the Missing Byte</h3>
<p><a href="http://www.jimhung.co.uk/wp-content/uploads/2012/12/trim_dial.jpg"><img class="alignleft  wp-image-1044" title="trim_dial" alt="" src="http://www.jimhung.co.uk/wp-content/uploads/2012/12/trim_dial.jpg" width="110" height="176" /></a>You may remember that I said above that everyone else who has reverse-engineered the protocol arrived at a 4-byte control packet. So where was my 4th byte? Well there’s one more dial on the controller we haven’t discussed — Trim. Trim is used to calibrate the rotor speed balance in order to account for any idiosyncrasies in the helicopter’s build that cause it to have a rotational bias to left or right.</p>
<p>In the other’s work, their controller sent a fourth byte containing information about the Trim dial’s setting. My controller doesn’t have that byte, but I do have Trim control… so what’s the deal? Let’s do a bit more testing:</p>
<pre>Type:         Data:                     Decimal Values (byte #):
Trim 100% L   <strong><span style="color: #ff0000;">01010000</span></strong>0011111101010100  <strong><span style="color: #ff0000;">(0): 80</span></strong>  (1): 63  (2): 84
Trim Centre   <strong><span style="color: #ff0000;">00111111</span></strong>0011111101010100  <strong><span style="color: #ff0000;">(0): 63</span></strong>  (1): 63  (2): 84
Trim 100% R   <strong><span style="color: #ff0000;">00101110</span></strong>0011111101010100  <strong><span style="color: #ff0000;">(0): 46</span></strong>  (1): 63  (2): 84</pre>
<p>We can see that the only byte that changes is Byte 0, so we can assume that rather than have a whole separate packet for trim control, the controller simply offsets the Yaw by a as much as –17 (right/clockwise compensation) or +17 (left/counter-clockwise compensation).</p>
<p>From a reverse engineering point of view, this is an interesting quirk. I have tried and tested both kinds of remote with the same helicopters and they both work flawlessly. What’s more, before I decoded the protocol myself, I built a whole controller based on the 4-byte protocol and never had any issues. So how does the helicopter know which protocol to use?</p>
<p>I think it might have something to do with the footer. The 3-byte protocol doesn’t require the helicopter to do anything in order to account for trim, while the 4-byte protocol requires the chopper’s on-board controller to offset the Yaw by the Trim value. The footer appears to consist a 300us high pulse then nothing until the next header, and this appears to be the case even on the other chaps’ 4-byte packets too. I suspect that if the helicopter’s on-board controller detects the end of a packet and it has only received 3-bytes of data, it pads the trim register with zeroes (no supplied trim offset) because it can assume trim control has been applied by the handset controller. Just a guess, but it seems logical. In any case, who would have thought the helicopter would be backwards/forwards compatible?</p>
<h3>Conclusion</h3>
<p>So there you have it — my first foray into hardware hacking and exploration. I think I’ve arrived at a definitive physical protocol definition, with timing values even better, perhaps, than the other projects I’ve mentioned throughout.  I put this down to the use of a logic analyser applied directly to the controller — this was unaffected by delays caused by the rise/fall times of the LEDs, IR detector, etc… that were part of the receiver circuits used by Kerry Wong and Hamsterworks to get around the issue of demodulating the 38khz IR signal. I was able to use Saleae’s excellent software to overcome those issues (albeit a little manually — it won’t demodulate the signal for you to my knowledge). The Saleae Logic also allowed me to sample at 16Mhz, certainly fast enough to get a high-resolution picture of the signals and really get some tight timing values for the transitions.</p>
<p>I hope this helps some new hacker get to grips with some of the ideas at play in reverse-engineering and hardware hacking, it’s certainly been a journey of discovery for me. If anyone has any questions, feel free to get in touch at <strong>jimhung [at] gmail [dot] com</strong>.</p>
<p>On to the next project!</p>
<p>Jim</p>
<h3> ** UPDATE — 12-8-2012 **</h3>
<p>I’ve had a little time this weekend to compare a 4-byte controller with 3-byte controller, so here are my findings.</p>
<ul>
<ul>
<li>The timings for the symbols and transmission intervals are identical between the two controllers, so my timings should work equally well on any revision of the 107G you end up getting.</li>
<li>One way to distinguish between which protocol version the controller is using may be the silkscreened model number and date on the controller PCB. The 3-byte controller had the model “S107T1” and the date “20090818” printed underneath the yaw/pitch and throttle control, respectively. The 4-byte controller had “s107T2” and “20100308” printed under the yaw/pitch control and on the right of the PCB.</li>
<li>The fourth byte indeed  communicates the value of the Trim, but I actually identified something really interesting — the offsetting of the Yaw value occurs anyway, regardless of packet type! Take a look at this:</li>
</ul>
</ul>
<pre>Control:         Control packet (4 byte)           Yaw:    Trim:
Trim 100% Left:  <span style="color: #0000ff;">01010000</span>0011111110110100<span style="color: #ff0000;">01111011</span>   <span style="color: #0000ff;">80</span>      <span style="color: #ff0000;">123</span>
Trim Centre:     <span style="color: #0000ff;">00111101</span>0011111111001001<span style="color: #ff0000;">00111000</span>   <span style="color: #0000ff;">61</span>      <span style="color: #ff0000;">56</span>
Trim 100% Right: <span style="color: #0000ff;">00101101</span>0011111111001111<span style="color: #ff0000;">00000001</span>   <span style="color: #0000ff;">45</span>      <span style="color: #ff0000;">1</span></pre>
<p>I suspect that the 107G doesn’t actually do anything with the Trim packet (perhaps I’ll test that with my DIY controller sometime soon), which explains how it’s able to handle both packet types — it simply ignores anything after the 3rd byte. I suspect that the 4th byte may be used by other toys using a similar design.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimhung.co.uk/?feed=rss2&#038;p=901</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>I Love Etsy, Part II!</title>
		<link>http://www.jimhung.co.uk/?p=891</link>
		<comments>http://www.jimhung.co.uk/?p=891#comments</comments>
		<pubDate>Tue, 30 Aug 2011 08:53:11 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Life Stuff]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[A Whiter Shade of Pale]]></category>
		<category><![CDATA[Dragon]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Packaging]]></category>
		<category><![CDATA[Projector]]></category>
		<category><![CDATA[Super 8]]></category>

		<guid isPermaLink="false">http://www.jimhung.co.uk/?p=891</guid>
		<description><![CDATA[After the last crazy awesome drawing, I had my eye on a set of Laurel &#38; Hardy films from A Whiter Shade Of Pale… I thought I’d try my luck with the next installment in the Dragon saga. This is what was waiting for me when I got back from China (click to enlarge!): I’m [...]]]></description>
				<content:encoded><![CDATA[<p>After the <a href="http://www.jimhung.co.uk/?p=882" title="crazy awesome drawing">last crazy awesome drawing</a>, I had my eye on a set of Laurel &amp; Hardy films from <a href="http://www.etsy.com/shop/Awhitershadeofpale" title="A Whiter Shade Of Pale">A Whiter Shade Of Pale</a>… I thought I’d try my luck with the next installment in the Dragon saga.</p>
<p>This is what was waiting for me when I got back from China (click to enlarge!):</p>
<p style="text-align: center;"><a href="http://www.jimhung.co.uk/wp-content/uploads/2011/08/MG_1653_fixed_sie.jpg"><img class="aligncenter size-full wp-image-892" title="_MG_1653_fixed_sie" src="http://www.jimhung.co.uk/wp-content/uploads/2011/08/MG_1653_fixed_sie.jpg" alt="" width="540" height="493" /></a></p>
<p>I’m so impressed by the effort that’s gone into the drawings! It makes me wonder if you could illustrate an entire kids book by asking random on-line stores to draw the scene on packaging..</p>
<p>Thanks again <a href="http://www.etsy.com/shop/Awhitershadeofpale" title="A Whiter Shade Of Pale">A Whiter Shade Of Pale</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimhung.co.uk/?feed=rss2&#038;p=891</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I love Etsy</title>
		<link>http://www.jimhung.co.uk/?p=882</link>
		<comments>http://www.jimhung.co.uk/?p=882#comments</comments>
		<pubDate>Wed, 10 Aug 2011 06:28:46 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Awesome]]></category>
		<category><![CDATA[Dragon]]></category>
		<category><![CDATA[Etsy]]></category>
		<category><![CDATA[Super 8]]></category>

		<guid isPermaLink="false">http://www.jimhung.co.uk/?p=882</guid>
		<description><![CDATA[I recently ordered a Super 8 projector (a Bell &#38; Howell 357B) to spur me on to finish a super 8 short with my Canon 814 — I thought I’d have a little fun with the order details… (click to expand) How awesome is that! Thanks to Awhitershadeofpale for taking the time and effort to [...]]]></description>
				<content:encoded><![CDATA[<p>I recently ordered a Super 8 projector (a Bell &amp; Howell 357B) to spur me on to finish a super 8 short with my Canon 814 — I thought I’d have a little fun with the order details… (click to expand)</p>
<p style="text-align: center;"><a href="http://www.jimhung.co.uk/wp-content/uploads/2011/08/Dragon_Box.jpg"><img class="aligncenter size-full wp-image-883" title="Dragon_Box" src="http://www.jimhung.co.uk/wp-content/uploads/2011/08/Dragon_Box.jpg" alt="" width="600" height="403" /></a></p>
<p>How awesome is that! Thanks to <a href="http://www.etsy.com/shop/Awhitershadeofpale">Awhitershadeofpale</a> for taking the time and effort to draw this for me!</p>
<p>Jim</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimhung.co.uk/?feed=rss2&#038;p=882</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Red Bull Soapbox Derby 2011</title>
		<link>http://www.jimhung.co.uk/?p=842</link>
		<comments>http://www.jimhung.co.uk/?p=842#comments</comments>
		<pubDate>Sun, 29 May 2011 21:29:03 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Life Stuff]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Red Bull; Soapbox; Canon 7D; Los Angeles; Photo;]]></category>

		<guid isPermaLink="false">http://www.jimhung.co.uk/?p=842</guid>
		<description><![CDATA[Because it was such a gorgeous day and to test drive my new Canon 7D, Andy and I drove into Downtown L.A. for this year’s Red Bull Soapbox Derby. It’s actually the first time I’ve been back to Downtown since last March, it hasn’t changed much.. ..Although having said that, the place was completely overtaken [...]]]></description>
				<content:encoded><![CDATA[<p>Because it was such a gorgeous day and to test drive my new Canon 7D, Andy and I drove into Downtown L.A. for this year’s Red Bull Soapbox Derby. It’s actually the first time I’ve been back to Downtown since last March, it hasn’t changed much..</p>
<p style="text-align: center;"><a href="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0532.jpg"><img class="aligncenter size-full wp-image-866" title="_MG_0532" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0532.jpg" alt="" width="599" height="461" /></a></p>
<p>..Although having said that, the place was completely overtaken by the Derby — the hill was provided by South Grand Ave all the way from the Wells Fargo building, round the corner to West 5th to Pershings Square.</p>

<a href='http://www.jimhung.co.uk/?attachment_id=843' title='_MG_0151'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0151-150x150.jpg" class="attachment-thumbnail" alt="_MG_0151" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=844' title='_MG_0173'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0173-150x150.jpg" class="attachment-thumbnail" alt="_MG_0173" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=845' title='_MG_0179'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0179-150x150.jpg" class="attachment-thumbnail" alt="_MG_0179" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=846' title='_MG_0192'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0192-150x150.jpg" class="attachment-thumbnail" alt="_MG_0192" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=847' title='_MG_0212'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0212-150x150.jpg" class="attachment-thumbnail" alt="_MG_0212" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=848' title='_MG_0220'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0220-150x150.jpg" class="attachment-thumbnail" alt="_MG_0220" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=849' title='_MG_0262'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0262-150x150.jpg" class="attachment-thumbnail" alt="_MG_0262" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=850' title='_MG_0280'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0280-150x150.jpg" class="attachment-thumbnail" alt="_MG_0280" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=851' title='_MG_0285'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0285-150x150.jpg" class="attachment-thumbnail" alt="_MG_0285" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=852' title='_MG_0305'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0305-150x150.jpg" class="attachment-thumbnail" alt="_MG_0305" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=853' title='_MG_0308'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0308-150x150.jpg" class="attachment-thumbnail" alt="_MG_0308" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=854' title='_MG_0354'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0354-150x150.jpg" class="attachment-thumbnail" alt="_MG_0354" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=855' title='_MG_0375'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0375-150x150.jpg" class="attachment-thumbnail" alt="_MG_0375" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=856' title='_MG_0385'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0385-150x150.jpg" class="attachment-thumbnail" alt="_MG_0385" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=857' title='_MG_0400'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0400-150x150.jpg" class="attachment-thumbnail" alt="_MG_0400" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=858' title='_MG_0410'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0410-150x150.jpg" class="attachment-thumbnail" alt="_MG_0410" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=859' title='_MG_0414'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0414-150x150.jpg" class="attachment-thumbnail" alt="_MG_0414" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=860' title='_MG_0417'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0417-150x150.jpg" class="attachment-thumbnail" alt="_MG_0417" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=861' title='_MG_0420'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0420-150x150.jpg" class="attachment-thumbnail" alt="_MG_0420" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=862' title='_MG_0425'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0425-150x150.jpg" class="attachment-thumbnail" alt="_MG_0425" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=863' title='_MG_0462'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0462-150x150.jpg" class="attachment-thumbnail" alt="_MG_0462" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=864' title='_MG_0500'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0500-150x150.jpg" class="attachment-thumbnail" alt="_MG_0500" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=865' title='_MG_0514'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0514-150x150.jpg" class="attachment-thumbnail" alt="_MG_0514" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=866' title='_MG_0532'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0532-150x150.jpg" class="attachment-thumbnail" alt="_MG_0532" /></a>
<a href='http://www.jimhung.co.uk/?attachment_id=867' title='_MG_0538'><img width="150" height="150" src="http://www.jimhung.co.uk/wp-content/uploads/2011/05/MG_0538-150x150.jpg" class="attachment-thumbnail" alt="_MG_0538" /></a>

<p>The costumes and cars were great, and the crashes even greater (how the Lady Gaga and Jurassic Park drivers didn’t die, I have no idea).</p>
<p>A good day in all, and was very impressed with the Canon 7D — more on that later!</p>
<p>Peace.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimhung.co.uk/?feed=rss2&#038;p=842</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stuff and that, yeah?</title>
		<link>http://www.jimhung.co.uk/?p=820</link>
		<comments>http://www.jimhung.co.uk/?p=820#comments</comments>
		<pubDate>Sun, 30 Jan 2011 06:28:37 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Typewriter]]></category>
		<category><![CDATA[Ukelele]]></category>

		<guid isPermaLink="false">http://www.jimhung.co.uk/?p=820</guid>
		<description><![CDATA[Since moving to LA, I’ve been able to indulge myself in some (mostly quite eccentric) consumerism, and have treated myself to some fun stuff: A vintage typewriter. I feel like emails, facebook, IM’s, etc… are a bit boring and disposable; you never really need to put any amount of effort and thought into what you [...]]]></description>
				<content:encoded><![CDATA[<p>Since moving to LA, I’ve been able to indulge myself in some (mostly quite eccentric) consumerism, and have treated myself to some fun stuff:</p>
<h2>A vintage typewriter.</h2>
<p><a href="http://www.jimhung.co.uk/wp-content/uploads/2011/01/IMG_5260-21.jpg"><img class="alignleft size-full wp-image-822" title="IMG_5260-2" src="http://www.jimhung.co.uk/wp-content/uploads/2011/01/IMG_5260-21.jpg" alt="" width="265" height="432" /></a>I feel like emails, facebook, IM’s, etc… are a bit boring and disposable; you never really need to put any amount of effort and thought into what you write. Letters are much more interesting and have a greater impact, simply by the virtue of being tangible and the product of some work, skill, thought and heart. The perfect solution: <strong>A Royal KVM Magic Margin </strong>desk typewriter.</p>
<p>Actually using the typewriter is a lot of fun — you will very quickly appreciate how much of Microsoft Word you take for granted (Margins, tabulation, auto-new line, etc…). Even the act of typing is a learning curve — you need to use the appropriate amount of pressure (too hard and the head with skip and leave ghost letters on the page, too light and the carriage might not advance causing you to over-type the next character). You’d think typing an exclamation mark would be straight forward, right? Wrong. You have to type an apostrophe, then backspace, then a full-stop. Make a typo? Unlucky — you better start from scratch. It sounds like a recipe for misery, but unless you are a bit of an idiot, the challenge is half the fun.</p>
<h2>A Ukulele.</h2>
<p><a href="http://www.jimhung.co.uk/wp-content/uploads/2011/01/IMG_5273-2.jpg"><img class="size-full wp-image-825 alignright" title="IMG_5273-2" src="http://www.jimhung.co.uk/wp-content/uploads/2011/01/IMG_5273-2.jpg" alt="" width="257" height="403" /></a>In the interests of keeping my moving hassle light, I didn’t ship anything over from the UK when I moved — including my guitar. At first, I didn’t appreciate how much I’d miss it, but when one of our directors brought his Baby Taylor in (which, thinking about it, I could have brought my own B.T as carry-on..), I realised that the simple joy of playing an instrument was missing from my life.</p>
<p>I couldn’t make my mind up whether to splash out big bucks on a new acoustic guitar (probably something in the $2000 dollar range) or try a new instrument out, like a Uke or Mandolin (around the $200 mark). I decided to go for the Uke as it looked like it would be easy to get the hang of and a bit more flexible than a Mandolin. I got a <strong>Lanikai CK-C</strong> (Curly Koa — Concert size).</p>
<p>Googling good resources for learning to play the thing threw up a great site with what might be the greatest name of all time: <strong><a href="http://ukulelehunt.com/">here</a>.</strong></p>
<p style="text-align: center;">-</p>
<p style="text-align: left;">That’s about it. Tune in next time when the fun buy will be an automobile…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimhung.co.uk/?feed=rss2&#038;p=820</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I’ll get a Wimpy…</title>
		<link>http://www.jimhung.co.uk/?p=774</link>
		<comments>http://www.jimhung.co.uk/?p=774#comments</comments>
		<pubDate>Mon, 08 Nov 2010 04:51:27 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Life Stuff]]></category>
		<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://www.jimhung.co.uk/?p=774</guid>
		<description><![CDATA[A few weeks ago, Mehreen flew out to L.A. to see me, which I was really looking forward to. I’ll probably make another post about that, but in the meantime, bask in the glory of us crossing off a pretty epic (and esoteric) entry in our to-do list. To give a little background, the first [...]]]></description>
				<content:encoded><![CDATA[<p>A few weeks ago, Mehreen flew out to L.A. to see me, which I was really looking forward to. I’ll probably make another post about that, but in the meantime, bask in the glory of us crossing off a pretty epic (and esoteric) entry in our to-do list.</p>
<p><a href="http://www.jimhung.co.uk/wp-content/uploads/2010/11/IMG_4795.jpg"><img class="aligncenter size-large wp-image-790" title="IMG_4795" src="http://www.jimhung.co.uk/wp-content/uploads/2010/11/IMG_4795-658x1024.jpg" alt="" width="380" height="591" /></a></p>
<p>To give a little background, the first time I met Mehreen, we hit it off by somehow getting on to the topic of Garth Merenghi’s Darkplace (long-time readers will know this is my favourite show of all time). From the earliest days of our relationship, we said we would one day have to make Egg in Soup (from the 6th episode, Hell Hath Fury).</p>
<p>So we did.</p>
<p style="text-align: center;"><a href="http://www.jimhung.co.uk/wp-content/uploads/2010/11/IMG_4785.jpg"><img class="aligncenter size-large wp-image-775" title="IMG_4785" src="http://www.jimhung.co.uk/wp-content/uploads/2010/11/IMG_4785-1024x707.jpg" alt="" width="480" height="332" /></a></p>
<p>Note: anyone puzzled, frightened or annoyed about the concept of an Egg in Soup, please see:</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/BH4_mZh-bj8?fs=1&amp;hl=en_GB" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/BH4_mZh-bj8?fs=1&amp;hl=en_GB" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>So we set out to test this most genius of ideas here in Los Angeles. This was to provide it’s own set of challenges, as there was no chance we were going to get our hands on a Pork Pie or Sausage Roll. Thus, we set out to make our own sausage roll — a lofty mission which was almost scuppered until Trader Joe’s came through for us with puff pastry at the 11th hour:</p>
<p><a href="http://www.jimhung.co.uk/wp-content/uploads/2010/11/IMG_4778.jpg"><img class="aligncenter size-large wp-image-785" title="IMG_4778" src="http://www.jimhung.co.uk/wp-content/uploads/2010/11/IMG_4778-1024x649.jpg" alt="" width="480" height="305" /></a></p>
<p>Mehreen took to the job of making the sausage roll with consummate professionalism:<br />
<a href="http://www.jimhung.co.uk/wp-content/uploads/2010/11/IMG_4790.jpg"><img class="aligncenter size-large wp-image-788" title="IMG_4790" src="http://www.jimhung.co.uk/wp-content/uploads/2010/11/IMG_4790-1024x862.jpg" alt="" width="480" height="404" /></a></p>
<p>The choice of soup was a complex one. In the show, the soup pictured is clearly cream of tomato, which gave us the basis for our selection, however the staple Tomato soup — Heinz — was a) difficult to get hold of in L.A. and b) too thick to necessarily poach an egg in or reach the required temperature (without spoiling). We decided that Cambells Condensed Tomato soup would suit us nicely — thin enough (when you add the water) to boil nicely for the poaching:</p>
<p><a href="http://www.jimhung.co.uk/wp-content/uploads/2010/11/Anim.gif"><img class="aligncenter size-full wp-image-797" title="Anim" src="http://www.jimhung.co.uk/wp-content/uploads/2010/11/Anim.gif" alt="" width="480" height="320" /></a></p>
<p>Not that you can tell, but we actually put a swirl in the soup to try and keep the egg together. As Ben will attest, my poached-egg game is not strong, so getting a decent result from tomato soup was a particularly great win.</p>
<p>The end result was pretty great if I say so myself (it wasn’t as greasy, or as plain disgusting as it might first appear — honestly, it was pretty nice!):</p>
<p><a href="http://www.jimhung.co.uk/wp-content/uploads/2010/11/IMG_4841.jpg"><img class="aligncenter size-large wp-image-802" title="IMG_4841" src="http://www.jimhung.co.uk/wp-content/uploads/2010/11/IMG_4841-1024x712.jpg" alt="" width="480" height="334" /></a></p>
<p>Hope this didn’t weird you out too much,</p>
<p>Jim</p>
<p>P.S. To compliment my Hendersons Relish, I picked up some Lea and Perrins Worcestershire Sauce. What I wasn’t prepared for was the unbelievably over the top packaging for it over here:</p>
<p style="text-align: center;"><img class="size-large wp-image-805  aligncenter" title="IMG_4842" src="http://www.jimhung.co.uk/wp-content/uploads/2010/11/IMG_4842-658x1024.jpg" alt="" width="300" height="467" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimhung.co.uk/?feed=rss2&#038;p=774</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Telegram.</title>
		<link>http://www.jimhung.co.uk/?p=759</link>
		<comments>http://www.jimhung.co.uk/?p=759#comments</comments>
		<pubDate>Mon, 11 Oct 2010 07:34:27 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Life Stuff]]></category>

		<guid isPermaLink="false">http://www.jimhung.co.uk/?p=759</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-762" title="IMG_4772-2" src="http://www.jimhung.co.uk/wp-content/uploads/2010/10/IMG_4772-2.jpg" alt="" width="611" height="900" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimhung.co.uk/?feed=rss2&#038;p=759</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>El-Eh?</title>
		<link>http://www.jimhung.co.uk/?p=733</link>
		<comments>http://www.jimhung.co.uk/?p=733#comments</comments>
		<pubDate>Sun, 04 Apr 2010 07:20:58 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Photography]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://jimhung.co.uk/wordpress/?p=733</guid>
		<description><![CDATA[I took advantage of the nice weather (blue skies, like every day since I arrived) and spent the day on the beach at Santa Monica.  I rather enjoyed the sea air and that. Almost makes up for the fact that americans don’t get a 4 day weekend for easter :’( I stopped by the Apple store [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-738" title="IMG_3190" src="http://jimhung.co.uk/wp-content/uploads/2010/04/IMG_3190.jpg" alt="" width="500" height="672" />I took advantage of the nice weather (blue skies, like every day since I arrived) and spent the day on the beach at Santa Monica.</p>
<p style="text-align: center;"> I rather enjoyed the sea air and that.</p>
<p style="text-align: center;"><img class="size-full wp-image-734  aligncenter" title="IMG_3206" src="http://jimhung.co.uk/wp-content/uploads/2010/04/IMG_3206.jpg" alt="" width="500" height="294" /></p>
<p style="text-align: center;">Almost makes up for the fact that americans don’t get a 4 day weekend for easter :’(</p>
<p style="text-align: center;">I stopped by the Apple store on the 3rd St Promenade to have a peek at the iPad which went on sale today. The chap in the shop said that they had a queue all the way down the road before the shop opened. I can believe it, the crowd around the iPad tables were ridiculous. In short, to me the iPad was typically Apple-like; slick, good looking, full of little ‘wow, neat’ moments, with just a hint of style over substance. The iBook app was pretty cool, the presentation is very nice and it looks like it could be a real contender for more traditional e-ink readers like the Kindle. I don’t know if I’d consider getting one when they are released in the UK, though.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-740" title="IMG_3211" src="http://jimhung.co.uk/wp-content/uploads/2010/04/IMG_3211.jpg" alt="" width="500" height="736" /></p>
<p style="text-align: center;">The trusty Polaroid SE 670 AF has had a workout this trip.</p>
<p style="text-align: center;">I’m looking forward to trying out my new Olympus OM-10 when I get back.</p>
<p style="text-align: center;">Lots of other things need posting about, but I’m sure you know that already.</p>
<p style="text-align: center;">Jim.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimhung.co.uk/?feed=rss2&#038;p=733</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You’re the city of the angels, yes indeed.</title>
		<link>http://www.jimhung.co.uk/?p=728</link>
		<comments>http://www.jimhung.co.uk/?p=728#comments</comments>
		<pubDate>Fri, 12 Mar 2010 02:23:22 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Life Stuff]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://jimhung.co.uk/wordpress/?p=728</guid>
		<description><![CDATA[I’m off to work for a month in L.A, in just under an hour and a half. I bet I’ve forgotten to pack something important. Like my passport. I’ll post properly when I’ve got a moment and some photos or something to share, right now I’m struggling enough to stay awake as it is. Work [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://jimhung.co.uk/wp-content/uploads/2010/03/hollywood.jpg"><img class="aligncenter size-full wp-image-729" title="hollywood" src="http://jimhung.co.uk/wp-content/uploads/2010/03/hollywood.jpg" alt="" width="500" height="400" /></a></p>
<p>I’m off to work for a month in L.A, in just under an hour and a half. I bet I’ve forgotten to pack something important. Like my passport.</p>
<p>I’ll post properly when I’ve got a moment and some photos or something to share, right now I’m struggling enough to stay awake as it is.</p>
<p>Work has been pretty exhausting lately, lots of on-sites and late nights. The overtime is nice though, hopefully it’ll pay off come the summer when we’re planning to visit Reykjavic and NYC, go camping and spend some time doing some proper photo stuff.</p>
<p>I passed my driving test back in January so I’m hoping to get a car and start racking up some road trips, get some use out of my cameras and that. First on the list is the video for Tom V’s latest song Mendocino Sky — we’re planning to shoot a Super8 music video to accompany it. I’ve got my hands on a Canon AutoZoom 814 which should do the job nicely.</p>
<p>I’m not sure it’s fully sunk in that in 24 hours I’m going to be in the states, it’s a long journey…</p>
<p>Post soon.</p>
<p>Jim</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimhung.co.uk/?feed=rss2&#038;p=728</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
