Planet LCA 2009

Syndicate content
Planet linux.conf.au 2009 - http://planet.linux.org.au/lca2009.html
Updated: 36 weeks 4 days ago

Colin Charles: The SkySQL Reference Architecture

May 27, 2011 - 13:49

I have a bunch of notes from the O’Reilly MySQL Conference & Expo 2011, and I figure its about time I started blogging it. These are notes from the panel on the SkySQL Reference Architecture, led by Kaj Arno and Ivan Zoratti. The notes are raw (read their FAQ for more), and I talk a little bit about the SkySQL Configurator at the end (a tool I immediately used, and submitted some bugs/improvements for – 7 at last count, which I hear got fixed in the 0.02 release, which got pushed last night!).

There were 7 panelists. The MySQL world needs:

  • technical support
  • monitoring & administration tools
  • simplified interfaces
  • development & user tools
  • consulting & training
Services & consulting generally are difficult to scale. The most comprehensive architecture around MySQL, scalable, adaptable and cloud ready Implementation:
  • select and test specific components
  • integrate components
  • provision the components in a simple interface
  • simplify monitoring & administration
  • technical services & support
  • validate solutions
  • improvements and new releases can be done
  • knowledge sharing related to the reference architecture
Technologies selected from Webyog, Sphinx, Drizzle, Monty Program, Calpont, Tokutek, ScaleDB, Schooner, Linbit, Zimory, Canonical.

SkySQL Provisioning tools:

  • SkySQL Manager – control and administer the SkySQL/MySQL environment
  • SkySQL Configurator – configure and update SkySQL reference architecture modules
  • SkySQL Tuner – analyse the configuration and prepare the packages

I did a test, and it seemed like I got binaries built in under 5 minutes. Custom configurations with a stock build. You get a 70MB binary. Hosted at http://www.enovance.com/. A lot of people never configure their my.cnf, so I think having a GUI on the web might be a good idea to help people have sensible defaults.

lovegood:skysql byte$ ls total 143352 drwxr-xr-x 3 byte staff 102 14 Apr 06:13 ./ drwx------@ 598 byte staff 20332 14 Apr 06:13 ../ -rw-r--r--@ 1 byte staff 73395132 14 Apr 06:12 SkySQL-mariadb-poboffcfrm5bi054559q8iea74.tar.gz lovegood:skysql byte$ tar -zxvpf SkySQL-mariadb-poboffcfrm5bi054559q8iea74.tar.gz x etc/ x etc/my.cnf x install x packages/ x packages/xtrabackup-1.4-74.rhel5.x86_64.rpm x packages/MySQL-client-5.5.10-1.rhel5.x86_64.rpm x packages/MySQL-server-5.5.10-1.rhel5.x86_64.rpm

SkySQL is also going to have a customer advisory board, and they are starting it this week. (I don’t know any further details about this as of yet.)

The SkySQL Configurator can only get better. I expect it will do custom packages including things like Sphinx/SphinxSE, Drizzle, and other things in due time.

Related posts:

  1. O’Reilly MySQL Conference & Expo 2011 – register now to save!
  2. Services Oriented Architecture with PHP and MySQL
  3. Federation at Flickr: A tour of the Flickr Architecture



Categories: Aligned Planets

Colin Charles: DiGi’s awesome customer service

May 22, 2011 - 00:33

People are always in shock & awe when they find out that DiGi, one of the largest three telcos in Malaysia, had an employee that went out of their way to help me solve a problem in February 2011. So I naturally wrote to their CEO, Henrik Clausen, on Charlie’s can-do attitude. This was sent on 22 February 2011 14:35:10 GMT+08:00. I’m publishing it here so I don’t have to retell the story at bars, meetups, etc.

Dear Henrik,

As I am about to get on the same weekly call that I got disconnected from last week, I figured now is the best time to write a quick can-do note for one of your employees who went out of their way to solve my problem – Charlie Chia.

A little backstory. I’ve been a DiGi customer since March 2009, when MNP was enabled. It seemed time to become an Enterprise customer, so that was what I decided on the 10th or 11th of February 2011. My DiGi assigned provider told me that the numbers that were to be ported in would need new SIM cards but the current DiGi numbers should be fine.

On February 14, he was rather frantic that the DiGi SIMs also needed to be changed, but there was no way he could pass me the SIM cards then. On February 15 at about 4.30pm while I was on a conference call, my line went dead it just said “emergency calls only”. It was a public holiday of some sort, but I work most times when I’m in the country (I’m sure you understand running a business is tough and requires commitment).

I tweeted at about 5pm, thinking nothing of it. The @DiGi_Telco account seemed to also be on vacation. But what happened later was what was most amazing. Twitter user @CharlieChia told me that he will solve this problem for me, and by about 10.15pm or so, he brought the SIM card to me at Royal Oak in Jaya One, where I was wrapping up my second last meeting for the night.

Now that is service. And a total Can-Do for Charlie Chia

On the morning of the 16th February, I received all the other SIM cards for my accounts. All is well. We’re happy DiGI Enterprise customers now

And I am your loyal evangelist, because I cherish good service, and I ensure it is rewarded

Related posts:

  1. Mobile Number Portability and the switch to DiGi
  2. FathomDB: Database as a service, in the cloud
  3. Finding people from cell phone base stations



Categories: Aligned Planets

Simon Horman: SH-Mobile ARM zboot presentation

May 20, 2011 - 16:58
This afternoon I made a short presentation at Japan Technical Jamboree 37 the work that I have been doing to allow booting Linux directly on the SH-Mobile ARM platform. This is an update on the presentation on the same topic in January at MobileFOSS Miniconf, part of linux.conf.au Brisbane 2011.

slides, etc...

Categories: Aligned Planets

Gabriel Noronha: Watch Digtal TV on Campus

May 17, 2011 - 21:51

If your on Campus at Newcastle university and want to watch some TV all you need is vlc media player.

The simple way is just lunch vlc remote it’s sitting on most university computers and select channel and go.

Otherwise just open  vlc select open network media stream and copy address from below

ABC news24  udp://@239.240.240.1:1234

Categories: Aligned Planets

Rob Weir: wsgiref + multiprocessing ftw

May 17, 2011 - 21:27

So, I wanted to do some very simple functional tests using a real-ish webserver, but I didn’t want to have to depend on twisted.web or an external setup. So I did this:

from wsgiref.simple_server import make_server from multiprocessing import Process, Queue class TestPosting(unittest.TestCase): # FIXME: THIS IS TERROBLE def setUp(self): self.q = Queue() self.p = Process(target=self.serve, args=(self.q,)) self.p.start() self.port = self.q.get() def serve(self, q): httpd = make_server('', 0, simple_app_maker(q)) port = httpd.server_port q.put(port) httpd.serve_forever() def tearDown(self): self.p.terminate() def test_something(self): url = "http://locahost:%s/whatever" % self.port ... result = self.queue.get() # make some assertions on the results def simple_app_maker(queue): def simple_app(environ, start_response): post_env = environ.copy() post_env['QUERY_STRING'] = '' post = cgi.FieldStorage( fp=environ['wsgi.input'], environ=post_env, keep_blank_values=True ) q.put(...) # put the relevant stuff in the queue status = '200 OK' response_headers = [('Content-type','text/plain')] start_response(status, response_headers) return ['Hello world!\n'] return simple_app

just have the simple_app function put whatever you want to check in the queue, and your tests pull it out and make some assertions. Super nasty, but it actually works!

Categories: Aligned Planets

Rob Weir: What loads URLs posted to twitter?

May 17, 2011 - 21:27

So a little while ago (at 19:56:40) I posted a tweet containing just a single url. Within seconds, I had these bots requesting the file:

::ffff:128.242.241.122 - - [22/Jan/2011:19:56:43 +1100] "HEAD /what_loads_twitter_urls HTTP/1.1" 404 0 "-" "Twitterbot/0.1" ::ffff:128.242.241.122 - - [22/Jan/2011:19:56:43 +1100] "HEAD /what_loads_twitter_urls HTTP/1.1" 404 0 "-" "Twitterbot/0.1"

No rDNS, but it is NTT IP space, who are who twitter hosts with, so could well be some official url scraping bot. Forgot to get my robots.txt, though.

::ffff:66.249.67.72 - - [22/Jan/2011:19:56:43 +1100] "GET /what_loads_twitter_urls HTTP/1.1" 404 143 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

Google twitter search foo. Probably already had my robots.txt.

::ffff:128.242.241.122 - - [22/Jan/2011:19:56:43 +1100] "HEAD /what_loads_twitter_urls HTTP/1.1" 404 0 "-" "Twitterbot/0.1" ::ffff:128.242.241.122 - - [22/Jan/2011:19:56:43 +1100] "HEAD /what_loads_twitter_urls HTTP/1.1" 404 0 "-" "Twitterbot/0.1"

Twitter again.

::ffff:65.52.2.212 - - [22/Jan/2011:19:56:44 +1100] "GET /what_loads_twitter_urls HTTP/1.1" 404 199 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"

Microsoft space, no rDNS, maybe Bing with a fake UA? No robots.txt retrieval.

::ffff:216.52.242.14 - - [22/Jan/2011:19:56:44 +1100] "GET /what_loads_twitter_urls HTTP/1.1" 404 169 "-" "LinkedInBot/1.0 (compatible; Mozilla/5.0; Jakarta Commons-HttpClient/3.1 +http://www.linkedin.com)"

Linkedin, obviously - not sure if they scrape all urls or just the ones on feeds people have listed on their profiles (which I have). No robots.txt retrieval.

::ffff:128.242.241.122 - - [22/Jan/2011:19:56:44 +1100] "HEAD /what_loads_twitter_urls HTTP/1.1" 404 0 "-" "Twitterbot/0.1" ::ffff:128.242.241.122 - - [22/Jan/2011:19:56:45 +1100] "HEAD /what_loads_twitter_urls HTTP/1.1" 404 0 "-" "Twitterbot/0.1"

Twitter again.

::ffff:67.195.115.246 - - [22/Jan/2011:19:56:46 +1100] "GET /robots.txt HTTP/1.0" 200 146 "-" "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)" ::ffff:67.195.115.246 - - [22/Jan/2011:19:56:46 +1100] "GET /what_loads_twitter_urls HTTP/1.0" 404 169 "-" "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)"

The very polite and honest yahoo bot.

::ffff:38.113.234.181 - - [22/Jan/2011:19:56:47 +1100] "GET /what_loads_twitter_urls HTTP/1.1" 404 169 "-" "Voyager/1.0"

Some social media search company called ‘kosmix’. Forgot to ask for robots.txt.

::ffff:65.52.17.79 - - [22/Jan/2011:19:56:47 +1100] "GET /what_loads_twitter_urls HTTP/1.1" 404 199 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"

Another MS bot, maybe bing again.

::ffff:89.151.116.52 - - [22/Jan/2011:19:56:48 +1100] "GET /what_loads_twitter_urls HTTP/1.1" 404 529 "-" "Mozilla/5.0 (compatible; MSIE 6.0b; Windows NT 5.0) Gecko/2009011913 Firefox/3.0.6 TweetmemeBot"

No idea. Reverses to bearpub.favsys.net, but (www.)favsys.net has no working web server. IP space belongs to some random dedicated server company. Possibly related to tweetmeme.com, some blah blah twitter trend thing.

::ffff:72.30.161.218 - - [22/Jan/2011:19:56:48 +1100] "GET /robots.txt HTTP/1.0" 200 146 "-" "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)" ::ffff:72.30.161.218 - - [22/Jan/2011:19:56:48 +1100] "GET /what_loads_twitter_urls HTTP/1.0" 404 169 "-" "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)"

Yahoo again.

::ffff:50.16.239.114 - - [22/Jan/2011:19:56:52 +1100] "GET /robots.txt HTTP/1.1" 200 146 "-" "Mozilla/5.0 (compatible; Birubot/1.0) Gecko/2009032608 Firefox/3.0.8" ::ffff:50.16.239.114 - - [22/Jan/2011:19:56:52 +1100] "GET /what_loads_twitter_urls HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Birubot/1.0) Gecko/2009032608 Firefox/3.0.8" ::ffff:50.16.239.114 - - [22/Jan/2011:19:56:52 +1100] "GET /what_loads_twitter_urls HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Birubot/1.0) Gecko/2009032608 Firefox/3.0.8"

Some ec2-hosted link trawling thing I guess.

::ffff:216.52.242.14 - - [22/Jan/2011:19:56:52 +1100] "GET /what_loads_twitter_urls HTTP/1.1" 404 169 "-" "LinkedInBot/1.0 (compatible; Mozilla/5.0; Jakarta Commons-HttpClient/3.1 +http://www.linkedin.com)"

Linkedin again.

::ffff:184.73.156.250 - - [22/Jan/2011:19:57:02 +1100] "HEAD /what_loads_twitter_urls HTTP/1.1" 404 0 "-" "Firefox" ::ffff:184.73.156.250 - - [22/Jan/2011:19:57:02 +1100] "HEAD /what_loads_twitter_urls HTTP/1.1" 404 0 "-" "Firefox"

Random ec2 customer with a fake User-agent.

2620:0:10c0:1002:a800:1ff:fe00:11fe - - [22/Jan/2011:19:57:22 +1100] "HEAD /what_loads_twitter_urls HTTP/1.1" 404 0 "-" "@hourlypress"

Google ipv6 space! Given the user-agent and lack of rDNS, maybe it’s some software running on appengine?

::ffff:74.112.128.61 - - [22/Jan/2011:19:57:24 +1100] "GET /robots.txt HTTP/1.0" 200 146 "-" "Mozilla/5.0 (compatible; Butterfly/1.0; +http://labs.topsy.com/butterfly/) Gecko/2009032608 Firefox/3.0.8" ::ffff:74.112.128.62 - - [22/Jan/2011:19:57:24 +1100] "GET /what_loads_twitter_urls HTTP/1.0" 404 169 "-" "Mozilla/5.0 (compatible; Butterfly/1.0; +http://labs.topsy.com/butterfly/) Gecko/2009032608 Firefox/3.0.8"

Some social web search engine startup I guess.

::ffff:75.101.170.136 - - [22/Jan/2011:19:57:51 +1100] "HEAD /what_loads_twitter_urls HTTP/1.1" 404 0 "-" "PycURL/7.18.2"

Some random python ec2-using bot that forgot to change their U-A or get my robots.txt.

Categories: Aligned Planets

Rob Weir: Silly Nagios error

May 17, 2011 - 21:27

If nagios claims:

Error: 'bar' is not a valid parent for host 'foo'!

it is because bar doesn’t exist (e.g. you used a name directive instead of a hostname one).

Categories: Aligned Planets

Rob Weir: PositiveSSL certificate chaining

May 17, 2011 - 21:27

If you have one of the free PositiveSSL certs that Namecheap gives away with new domains, you’ll find that it probably needs an intermediate cert to make OpenSSL stop complaining. Since they list a bunch here, let me save you some time: you need this one. If you’re using nginx, just add that file to the bottom of your signed cert (i.e. the thing PositiveSSL emailed you).

Categories: Aligned Planets

Rob Weir: nginx and IPv6

May 17, 2011 - 21:27

nginx now has ipv6 support! Yay! To have it work on Debian, all you need to do is open up /etc/nginx/sites-available/default and replace:

listen 80;

with

listen [::]:80 default ipv6only=on;

ipv6only=on here is a bit of a lie - it will listen on both ipv4 and ipv6.

Then, in your /etc/nginx/sites-available/* files, add

listen [::]:80;

just below

listen 80;

so nginx listens on both.

Categories: Aligned Planets

Rob Weir: Using your iphone as a modem under Debian

May 17, 2011 - 21:27

Thanks to the awesome work of Diego Giagio (for writing it) and Paul McEnery (for packaging it for Debian), using your iPhone as a modem under Debian is about 60 seconds work:

  1. Install ipheth-dkms (the kernel module side of things) and ipheth-utils (the userspace pairing daemon).
  2. watch the postinst build the kernel driver for your current kernel
  3. plug your phone in
  4. dmesg|grep iPhone should show something like:

    [867025.370421] ipheth 3-2:4.2: Apple iPhone USB Ethernet device attached

    and you’ll find you have a new Ethernet interface

  5. enable tethering on the phone (Settings -> General -> Network -> Internet Tethering)
  6. now the ethernet interface is running a DHCP server - select it with nm-applet or ifup it or whatever you normally do
Categories: Aligned Planets

Rob Weir: Highlighting trailing whitespace in vim

May 17, 2011 - 21:27

This config snippet configures vim to highlight trailing whitespace in a horrendous red, making it easy to spot and remove.

:highlight ExtraWhitespace ctermbg=red guibg=red autocmd Syntax * syn match ExtraWhitespace /\s\+$\| \+\ze\t/

Even better would be to only highlight it on lines that have been otherwise modified since the last commit…

Categories: Aligned Planets

Rob Weir: Dune2 on Linux

May 17, 2011 - 21:27

Download it from here (with a browser, it does some redirect crap). Install dosbox:

sudo aptitude install dosbox

It is a self-extracting zip file, so you can either use wine to unzip (holy nuclear option, batman) or install unzip:

sudo aptitude install unzip

Create a directory that we can ask dosbox to mount as ‘C:’, then unzip it:

mkdir -p ~/.dos/Dune2 cd ~/.dos/Dune2 unzip ~/Downloads/Dune2.exe

Get a default config file by starting up dosbox:

dosbox

and (in dosbox) ask it to write out a config file for you:

config -writeconf /home/you/.dosbox.conf

type ‘exit’ in the dosbox window to, er, exit. Add the line to mount the directory we created:

echo "mount c /home/you/.dos" >> ~/.dosbox.conf

and start dosbox again (with that config):

dosbox -conf ~/.dosbox.conf

and run Dune2 in the dosbox window (dosbox’s shell has tab completion, yay):

cd Dune2 Dune2.exe

Clicking in the window will make dosbox grab your mouse and keyboard - ctrl-f10 to escape.

Categories: Aligned Planets

Rob Weir: Excluding draft posts from your feeds

May 17, 2011 - 21:27

Since feeds in ikiwiki are just the result of the [[inline]] directive generation a list of pages, you can use the combination of a pagespec and the tag plugin to stop ikiwiki from syndicating draft pages. Just include “!tagged(draft)” in your page spec for the page that generates the feed (e.g. blog.mdwn):

[[!inline pages="./blog/* and !*/Discussion and !tagged(draft)" show="100" ]]

then for each article you’d like to hide for now, simply add the ‘draft’ tag:

[[!tag foo bar baz draft]]
Categories: Aligned Planets

Rob Weir: Custom User-Agent with twisted.web.client.getPage

May 17, 2011 - 21:27

Since getPage just passes most of its’ args through to HTTPClientFactory, you can just make a simple wrapper to set the user-agent:

from twisted.web.client import getPage ... def my_page_getter(*args, **kwargs): if 'agent' not in kwargs: kwargs['agent'] = 'your user agent/1.2' return getPage(*args, **kwargs)
Categories: Aligned Planets

leigh morresi: Google pagespeed test

May 13, 2011 - 20:35
Categories: Aligned Planets

Sridhar Dhanapalan: Installing Skype and Java on XOs

May 5, 2011 - 01:59

We had a query about running Skype and WebEx on XOs.

Getting Skype to work is quite straightforward.

WebEx requires Java, which is trickier.

Note that I only tested to the point of being able to run a test applet in Firefox. If anyone wants to try WebEx, please let me know of your experiences.



©2011 Sridhar Dhanapalan.

This work is licensed under a Creative Commons Attribution-Share Alike 2.5 Australia Licence.

.
Categories: Aligned Planets

Josh Stewart: Cortina Fuel Injection – Part 1 The Electronics

May 1, 2011 - 22:38

Besides being your run of the mill computer geek, I’ve always been a bit of a car geek as well. This often solicits down-the-nose looks from others who associate such people with V8 Supercar lovin’ petrolheads, which has always surprised me little because the most fun parts of working on a car are all just testing physics theories anyway. With that in mind, I’ll do this writeup from the point of view of the reader being a non-car, but scientifically minded person. First a bit of background…

Background

For the last 3 years or so my dad and I have been working a project to fuel inject our race car. The car itself is a 1968 Mk2 Cortina and retains the original 40 year old 1600 OHV engine. This engine is originally carbureted, meaning that it has a device that uses the vacuum created by the engine to mix fuel and air. This mixture is crucial to the running of an engine as the ratio of fuel to air dramatically alters power, response and economy. Carburetors were used for this function for a long time and whilst they achieve the basics very well, they are, at best, a compromise for most engines. To overcome these limitations, car manufacturers started moving to fuel injection in the 80?s, which allowed precise control of the amount of fuel added through the use of electronic signals. Initially these systems were horrible however, being driven by analog or very basic digital computers that did not have the power or inputs needed to accurately perform this function. These evolved to something useful throughout the 90?s and by the 00?s cars were having full sequential system (more on this later) that could deliver both good performance and excellent economy. It was our plan to fit something like the late 90?s type systems (ohh how did this change by the end though) to the Cortina with the aims of improving the power and drivability of the old engine. IN this post I’m going to run through the various components needed from the electrical side to make this all happen, as well as a little background on each. Our starting point was this:

The System

To have a computer control when are how much fuel to inject, it requires a number of inputs:

  • A crank sensor. This is the most important thing and tells the computer where in the 4-stroke cycle (HIGHLY recommended reading if you don’t know about the 4 strokes and engine goes through) the engine is and therefore WHEN to inject the fuel. Typically this is some form of toothed wheel that is on the end of the crankshaft with a VR or Hall effect sensor that pulses each time a tooth goes past it. The more teeth the wheel has, the more precisely the computer knows where the engine is (Assuming it can keep up with all the pulses). By itself the toothed wheel is not enough however as the computer needs a reference point to say when the cycle is beginning. This is typically done by either a 2nd sensor that only pulses once every 4 strokes, or by using what’s know as a missing tooth wheel, which is the approach we have taken. This works by having a wheel that would ordinarily have, say, 36 teeth, but has then had one of them removed. This creates an obvious gap in the series of pulses which the computer can use as a reference once it is told where in the cycle the missing tooth appears. The photos below show the standard Cortina crankshaft end and the wheel we made to fit onto the end

    Standard Crankshaft pulley

    36-1 sensor wheel added. Pulley is behind the wheel

    To read the teeth, we initially fitted a VR sensor, which sat about 0.75mm from the teeth, however due to issues with that item, we ended up replacing it with a Hall Effect unit.

  • Some way of knowing how much air is being pulled into the engine so that it knows HOW MUCH fuel to inject. In earlier fuel injection systems this was done with a Manifold Air Flow (MAF) sensor, a device which heated a wire that was in the path of the incoming air. By measuring the drop in temperature of the wire, the amount of air flowing over it could be determined (Although guessed is probably a better word as most of these systems tended to be fairly inaccurate). More recently systems (From the late 90?s onwards) have used Manifold Absolute Pressure (MAP) sensors to determine the amount of air coming in. Computationally these are more complex as there are a lot more variables that need to be known by the computer, but they tend to be much more accurate for the purposes of fuel injection. Nearly all aftermarket computers now use MAP and given how easy it is the setup (just a single vacuum hose going from the manifold to the ECU) this is the approach we took.

The above are the bare minimum inputs required for a computer to control the injection, however typically more sensors are needed in order to make the system operate smoothly. We used:

  • Temperature sensors: As the density of air changes with temperature, the ECU needs to know how hot or cold the incoming air is. It also needs to know the temperature of the water in the coolant system to know whether it is running too hot or cold so it can make adjustments as needed.
  • Throttle position sensor: The ratio of fuel to air is primarily controlled by the MAf or MAP sensor described above, however as changes in these sensors are not instantaneous, the ECU needs to know when the accelerator is pressed so it can add more fuel for the car to be able to accelerate quickly. These sensors are typically just a variable resistor fitted to the accelerator.
  • Camshaft sensor: I’ll avoid getting too technical here, but injection can essentially work in 2 modes, batched or sequential. In the 4 strokes an engine goes through, the crankshaft will rotate through 720 degrees (ie 2 turns). With just a crank sensor, the ECU can only know where the shaft is in the 0-360 degree range. To overcome this, most fuel injection systems up to about the year 2000 ran in ‘batched’ mode, meaning that the fuel injectors would fire in pairs, twice (or more) per 720 degrees. This is fine and cars can run very smoothly in this mode, however it means that after being injected, some fuel mixture sits in the intake manifold before being sucked into the chamber. During this time, the mixture starts to condense back into a liquid which does not burn as efficiently, leading to higher emissions and fuel consumption. To improve the situation, car manufacturers starting moving to sequential injection, meaning that the fuel is only ever injected at the time it can go straight into the combustion chamber. To do this, the ECU needs to know where in 720 degrees the engine is rather than just in 360 degrees. As the camshaft in a car runs at half the crankshaft speed, all you need to do this is place a similar sensor on this that produces 1 pulse every revolution (The equivalent of 1 pulse every 2 turns of the crank). In our case, we had decided that to remove the distributor (which is driven off the crank) and converted it to provide this pulse. I’ll provide a picture of this shortly, but it uses a single tooth that passes through a ‘vane’ type hall effect sensor, so that the signal goes high when the tooth enters the sensor and low when it leaves.
  • Oxygen sensor (O2) – In order to give some feedback to the ECU about how the engine is actually running, most cars these days run a sensor in the exhaust system to determine how much of the fuel going in is actually being burned. Up until very recently, virtually all of these sensors were what is known as narrowband, which in short means that they can determine whether the fuel/air mix is too lean (Not enough fuel) or too rich (Too much fuel), but not actually by how much. The upshot of this is that you can only ever know EXACTLY what the fuel/air mixture is when it switches from one state to the other. To overcome this problem, there is a different version of the sensor, known as wideband, that (within a certain range) can determine exactly how rich or lean the mixture is. If you ever feel like giving yourself a headache, take a read through http://www.megamanual.com/PWC/LSU4.htm which is the theory behind these sensors. They are complicated! Thankfully despite all the complication, they are fairly easy to use and allow much easier and quicker tuning once the ECU is up and running.

So with all of the above, pretty much the complete electronics system is covered. Of course, this doesn’t even start to cover off the wiring, fusing, relaying etc that has to go into making all of it work in the terribly noisy environment of a car, but that’s all the boring stuff

ECU

Finally the part tying everything together is the ECU (Engine Control Unit) itself. There are many different types of programmable ECUs available and they vary significantly in both features and price, ranging from about $400 to well over $10,000. Unsurprisingly there’s been a lot of interest in this area from enthusiasts looking to make their own and despite there having been a few of these to actually make it to market, the most successfully has almost certainly been Megasquirt. when we started with this project we had planned on using the 2nd generation Megasquirt which, whilst not having some of the capabilities of the top end systems, provided some great bang for bang. As we went along though, it became apparent that the Megasquirt 3 would be coming out at about the right time for us and so I decided to go with one of them instead. I happened to fluke one of the first 100 units to be produced and so we had it in our hands fairly quickly.

Let me just say that this is an AMAZING little box. From what I can see it has virtually all the capabilities of the (considerably) more expensive commercial units including first class tuning software (Multi platform, Win, OSX, linux) and a very active developer community. Combined with the Extra I/O board (MS3X) the box can do full sequential injection and ignition (With direct coil driving of ‘smart’ coils), launch control, traction control, ‘auto’ tuning in software, generic I/O of basically any function you can think of (including PID closed loop control), full logging via onboard SD slot and has a built in USB adaptor to boot!

Megasquirt 3 box and unassembled components

In the next post I’ll go through the hardware and setup we used to make all this happen. I’ll also run through the ignition system that we switched over to ECU control.

Categories: Aligned Planets

Sridhar Dhanapalan: Documentary about OLPC Designer Yves Behar

April 29, 2011 - 10:27

SBS television recently screened a documentary about Yves Behar, the person behind the distinctive industrial design of the OLPC XO laptop. It’s a fascinating insight into the mind and influences behind one of the most influential designers around. The documentary was originally aired in November 2008, so it is a little dated. For example, Yves talks about the “XOXO” XO-2, which has since been replaced with the XO-3. Nevertheless, it is well worth watching.

You can view the full version at the SBS Web site. The section on OLPC starts at 14:48.

UPDATE: if you are having trouble viewing the video, try this one instead. The attention to detail and quality is astounding. Yves rightly points out that products seen in lesser economically developed countries are normally second hand or second rate. The design is rugged and functional. It provides scope for personalisation. What was most interesting to me is Yves’ commentary on the keyboard. Its one-piece design means that the letters can be printed in one silkscreening process. This makes it feasible to translate into languages that would be uneconomical with a standard keyboard design.



©2011 Sridhar Dhanapalan.

This work is licensed under a Creative Commons Attribution-Share Alike 2.5 Australia Licence.

.
Categories: Aligned Planets