Wifi versus Powerline Networking

The Problem

My personal home network may be a little more complicated than average.  I used to work as a full time Unix/Linux sys-admin so I have some specific ideas about how I like to do things.  But I suffer from a similar problem as many, many other people: I have more than one computer spread through my house and they aren’t all in the same room as my DSL router.  To complicate things I have an upstairs and a downstairs basement and it would be impossible to run cables every where I need to go.

Wifi

The obvious solution is to connect a Wifi router to my DSL box and link up everything (a sever, a couple desktop PC’s, a couple laptops, a couple smart phones, etc.) all through the wifi.  This actually works pretty ok, but I have some annoyances:

  • Two desktop PC’s next to each other have to talk at Wifi speeds rather than 100Mbit ethernet speeds
  • Even within my house, I suffer from signal degradation between the basement and the upstairs.  Some areas don’t get a clean signal and can’t get nearly the bandwidth I should theoretically be able to get.
  • I do regular backups of all my PC’s to a server so I generate a *lot* of traffic a *lot* of the time and my daily interactive network use is affected because I don’t always have a lot of spare band width over the air.  I end up with web connections randomly timing out once in a while, and various things not working consistently.  This is a frustration since I work out of my home office and much of my day depends on being online.
  • Wifi transmits a lot of high energy RF right by your head or lap or other body parts … I suppose that’s not much of a health issue, or so I’m led to believe.
So wifi is ok, but with the loads I put on it, and the signal loss through walls and through the floor/ceiling, my service levels are inconsistent and I get frustrated having to wait for things or being forced to refresh a page that refuses to load — several times.

Powerline Ethernet

Say whatever you want about walmart, but I was up at my local store poking around and noticed a clearance rack in the electronics section.  They were selling a couple things called “Netgear Powerline 85 Adapter Kit”.  I had no idea what that was, but it caught my eye long enough to take a closer look at the box.  Then I went home and did some googling.  Finally the next day I rushed back to the store and strangely, all 4 units were still on the clearance rack so I bought one set.  I must have been the only one to notice the geek gold mine! <laugh>

What is Powerline Networking?

Powerline networking allows you to run ethernet over your existing AC wiring, rather than running dedicated ethernet lines or going over the air with wifi.  This is really cool, I didn’t know you this was possible, so I had to try it out and see how it worked.

How does it work?

It works pretty well!  In my case, my package came with two adapters that each plug into an AC outlet and have an RJ-45 jack on the side.  Instead of connecting two devices by running a 300′ ethernet cable across the basement floor, up the stairs, through the living room, down, the hall, and into my office … I just run a very short ethernet cable (included) to a powerline adapter and plug that into the nearest AC outlet.  Now I go to the other end of my house and plug a very short ethernet cable (also included) into the 2nd powerline adapter and plug that into the nearest AC outlet.  The 2 powerline adapters find each other automatically and create a bridge over my AC wiring.  My two devices are now happily talking and I’m not tripping over long ugly wires strung around my house.

So is it any better than Wifi?

I should qualify the following comments and suggest that for most people your mileage may vary.  There are potential issues that could make powerline networking not work so well and you need to watch out for these.

  • Do not plug your powerline adapater into a power strip, or a power strip plugged into to another power strip.  For best results and best bandwidth, you need to plug directly into a wall outlet.
  • It is possible for electric appliances and other things to create noise on your AC power lines and disrupt the ethernet networking signal.  Better devices include better filtering, but this is always a potential issue.
  • I don’t know how far a network could extend over AC and when you might start seeing signal degradation and slow downs.
  • I don’t know how many devices you can stack up (right now I just use a single pair) and how the system would react to higher traffic loads.
All disclaimers aside, I noticed a big improvement over my existing wifi network.
  • Base bandwidth improved noticeably.  My connection to the server on the other side can now get more data through faster than before.  This is a big win and worth the expense by itself.
  • I see more consistent service under load.  With wifi I noticed that if I was doing a long download, that could saturate the link and anything else I tried to do could really suffer.  Powerline networking seems to do a better job and managing contention and avoiding starvation of one connection in favor of another.  Everything seems better balanced, and even if I have the link saturated with a big download (or a long level 0 backup), my interactive use seems to be snappy and responsive … something that didn’t happen with wifi.

What else is cool about powerline networking?

I’m sure if you’ve read this far you can see I’m not a powerline networking expert, but here are some cool things I discovered along the way:

  • I purchased 85Mbit devices, but I see that now 200Mbit devices are available.
  • My devices suck up an AC outlet which can be a pain.  Newer devices often have an AC pass through so you don’t lose an outlet.
  • I’ve seen devices with 3 ethernet jacks rather than just one.  These serve as a little mini ethernet hub for those of us that might have more than one network device in a room.
  • My devices offer encryption at the OS level (i.e. they come with a windows drivers.)  Mostly I run linux so I don’t think that helps me much.  But because I run linux, most of my LAN connections are already encrypted via ssh or https, so I’m not too worried about that.  I think newer devices offer better plug and play encryption options if that’s an important consideration.

How to be an Electronics Whiz on a Small Budget

Simple tools that you will use all the time!

I work with small electronics boards and components as part of my day job. I don’t really have a nice concise job title for myself, but lately it would be something like “UAS Embedded Flight Control Engineer”.  I come from primarily a software / computer science background, but when you have an obstinate electronic gizmo sitting on your desk and no one to hold your hand, it’s time to get up to speed on some basic electrical engineering concepts.

Digital Multimeter


A digital multimeter is a great first tool.  You can pick up one of these for a few bucks at home depot or just about anywhere.  What can you do with one of these?

  • Check the voltage of a pin or a trace or a through hole on your board.  You can often learn a lot by checking the voltage at specific locations on your board.  (This presumes some understanding of the components on your board and a schematic that shows how everything connects together.)  Are you getting power where you should be getting power?  If you have a little microcontroller running, is it driving the output pins high when it should?  Driving them low when it should?  There is a lot you can learn and debug and diagnose just by measuring voltages.  Even when there is signal traffic across a line you can often deduce interesting information.  For instance, the TX line on a serial port should live at +V (for whatever voltage you are running at) and the signal spikes should go low.  The opposite happens for the RX line.
  • Check if two points on your board are connected.  My multimeter has a 2nd mode where it will ring out a continuous tone when I touch the two leads together or if I touch the leads to two ends of a wire or a trace.  This can be really useful when you are hunting around a board and want to know where precisely the other end of a trace comes out, or verifying your solder joint is correct, or verifying you haven’t shorted something out, etc.  This is very handy for basic troubleshooting and it’s amazing how much you can do with very simple tool if you understand your hardware and think carefully about what you are doing.

Oscilloscope

Normally we think of really high end test equipment that costs thousands of $$$ when the word “oscilloscope” is mentioned.  And I don’t doubt you get what you pay for in terms of capabilities and quality.  But here’s an idea for the hobbiest who doesn’t have a couple spare thousands of $$$ in loose change they can dig out of their couch cushions on a moments notice: there are a ton of inexpensive oscilloscope modules you can buy that connect to your computer through the usb port and use your computer screen as the display.  Many of these are in the $200 range — something that hobbiests could consider.

I poked around and decided to try the cheapest thing I could find: A “PoScope Mega1 Bundle” on sale for $162 at saelig.com.  I don’t have any special allegiance to these guys, but they shipped right away and I have no complaints.  Here’s what comes in the box.  It may not look like much at first, but what you can do with it is pretty sweet, it’s a real oscilloscope after all.

Minor side note:  The software you download to support this device is Windows only.  I’m a Linux guy, but I have a Windows XP virtual machine running inside “Virtual Box” inside my Linux box.  The best of both worlds for all you Hannah Montana fans. 🙂

There was a little slip of paper in the box directing me to go to www.poscope.com and download the latest software application and drivers.  My bundle didn’t include one of those round shiny things which is just as well.  After some fiddling around downloading and installing the drivers (and then rereading the instructions for installing the drivers and doing it again more carefully) I was up and running!

Here is a screen shot from the poscope page.  It shows several things you can do.  With two probes you can show two signals on a single plot.  You can show the X, Y plot of the two signals, and even do some FFT frequency analysis of your signals.

This might sound like really complicated electrical engineering stuff, but let me bring it over to my world and show you some of the things I might like to use it for.  The embedded electronics I deal with include microcontrollers that communicate with sensors and external pins.  If something doesn’t work, sometimes it is important to get a little bit more detailed view of what’s going on besides looking at the steady state voltage or basic connectivity.

Here is a screen shot of serial communication traffic at 1.8v logic level:

  • When two devices aren’t talking properly across their dedicated signal lines you can probe the communication at different points and see exactly what is happening.  Is there signal traffic?  What voltage level is the traffic at?  Often different devices expect their digital signals to operate at different voltage levels.  What if a 1.8v device needs to talk to a 3.3v device or a 5v device needs to talk to a 1.8v device?  You need voltage level conversion chips and life gets a bit more complicated than you like … especially if something isn’t working.  But with an oscilloscope you can probe different points of the communication path and see exactly what is happening.  Is the source sending the signal?  Is it being converted properly?  Is the signal making it all the way to the destination?
  • Digital logic analysis.  The poscope includes a separate connector with 16 digital signal lines.  The software includes a way to decode and display incoming serial traffic or other digital signals like i2c or spi communication.   Are you trying to connect up an i2c or spi device and something isn’t quite working yet?  Looking at the digital logic and relative timings of the different pulses might be just the thing you need to sort out exactly what’s going on.
  • I discovered another interesting use … debugging my code.   I needed to write a small program for an ATTINY13A microcontroller.  This is an 8-bit microcontroller running at 9.6Mhz.  It offers a whopping 1k of flash for my programs, 64 bytes of internal SRAM, and all of 8 pins to receive ground/power, and talk to the outside world.  There is no serial port for printf()’s, no display, no keyboard, no mouse.  The programming device shares these 8 lines to upload new programs.  Now to be fair, there is a whole suite of software you can download for windows, but I’m a linux guy remember, so what fun is that.  I needed to validate clock timings and check if my interrupt service routine was responding correctly, so why not toggle one of the digital output pins, probe that with my oscope and validate the program operation and timing by measuring the pulse lengths of the digital signal that is being produced?
Here is a screen shot of my ATTINY13A generating a PWM pulse that mirrors an incoming PWM pulse from an RC receiver.  I can even slide C1 and C2 (the vertical white lines) side to side to mark the start and end of the pulse and read off the time interval.

Conclusion

I’m barely scratching the surface of what you can do with an oscope (hey I’m learning as I go here too), but for < $200 why not consider picking up an inexpensive USB based oscilloscope.  It may not be something use every day for the rest of your life, but on those days when you really need to see and understand a little bit more about what is happening on your circuit board or what your tiny microcontroller is really doing, an oscope is a great tool!

Gumstix Overo, RC Servos, and PWM Signal Generation

What I want to do: Control RC Servos from a Gumstix Overo

I have a project where I need to drive standard RC servos from a Gumstix Overo.  It doesn’t appear that the Overo ships with any built in PWM drivers.  I did quite a bit of googling, and still couldn’t find a single drop-in driver that worked well for driving RC servos.  I did find some great help though, rolled up my sleeves, and stitched pieces together to make the mother of all RC servo drivers.
Scott Ellis @ jumpnowtek.com has a nice introduction to programming the Overo hardware PWM signal generators: http://www.jumpnowtek.com/index.php?option=com_content&view=article&id=56&Itemid=63
The Overo has 4 available PWM signal generators on 4 specific GPIO lines.  Scott provides a simple driver that demonstrates how to configure PWM10 to generate a signal at any frequency and duty cycle.

What is PWM?  Frequency?  Duty Cycle?

PWM stands for “pulse width modulation”.  It is a common approach for computer servo control.  Essentially the computer sends a short signal pulse (raises the signal line high.)  The exact length of this pulse tells the servo where to position itself.  The computer sends the pulse at a regular rate and varies the “width” (or the time span) of the pulse to control the position of the servo.  This is how all standard RC servos work.  The number of pulses we send per second is called the “frequency”.  Typical RC systems use a frequency of 50hz.  The ratio of the on versus off time of the signal is called the “duty cycle”.  A duty cycle of 0% means no pulse at all.  A duty cycle of 100% means the pulse is always on.

For a standard RC system running at 50hz, there will be a pulse generated every 20,000 us.  (1 sec = 1,000,000 us; and 1,000,000us / 50hz = 20,000us).  The pulse length to center a servo is 1500 us and the useful pulse range to run the servo through it’s full range of motion is about 1000 us – 2000 us.  If you send a 1500us pulse every 20,000us, then the duty cycle is 1500 / 20,000 or 7.5%.  The duty cycle range for controlling a servo at 50hz is then between 5% and 10%.

Scott Ellis’s “Basic” PWM Kernel Driver

Scott Ellis on the page linked above makes a basic pwm.c driver available.  This driver only sets up one PWM (PWM10 aka GPIO145).  This is routed to pin 28 on the “standard” 40 pin breakout header included on many overo expansion boards.  This was a great start, but has some limitations.

  • It only supports one PWM line (PWM10)
  • Duty cycle is entered as an integer percentage.  RC servos operate across the range of about 5-10% so that only gives me 6 unique positions, not nearly the granularity I want

Signal (Logic) Level Translation

A quick note on something that can turn into a really tricky headache for newcomers to the Overo.  The Overo uses 1.8v logic for all it’s output.  This means that even though you are generating a perfect PWM signal to drive your servo, nothing will probably happen because the servo is expecting 3.3v (or maybe even 5v) signal logic.  It may not see or respond correctly to 1.8v logic.  This is also a more general issue for any external communication with the gumstix overo and is something embedded hardware engineers encounter every day.  There are many ways to address this issue, but one quick and easy solution is to buy a logic level converter from sparkfun.com: http://www.sparkfun.com/products/8745

This sparkfun board supports level shifting for 4 lines at the same time.  I soldered 0.1″ male header pins onto both sides and then used sparkfun 6″ single wire jumpers to connect things together.  It is slick and relatively easy and with the color coded wires it even looks cool, especially on a glass desk with the office lights off and all the LED’s blinking.  🙂  All you have to do is tie your grounds together.  Then connect 1.8v (pin #16 on the 40 pin header) to the LV side.  Connect 3.3v (pin #2 on the 40 pin header) to the HV side, and then pipe the signal line through to the servo.  Despite the RX/TX labelling, I believe the signal conversion is bi-directional on the latest version of this sparkfun level shifter board.

Jack Elston’s Driver Extension to Support all Four PWM Lines

Scott emailed me an update to his pwm.c which expands support to all 4 hardware PWM signal generators.  This is a great next step.  However this version of the driver also had some limitations:

  • PWM10 and PWM11 used the 32Khz clock (which is the default).  Leaving the details aside, the 32Khz clock can only achieve about 32 unique positions across the typical RC servo range of motion.
  • I believe there is some integer overflow for PWM8 and PWM9 when computing the duty cycle which leads to odd results.
  • Part way into the project I decided I wanted to generate PWM pulses with sub us resolution.

13Mhz Versus 32Ghz Clock

Scott Ellis to the rescue again.  Scott emailed me an older testing driver he had built called “pulse.c” (note: Scott makes all his drivers available github.com under the GPL license.)  The pulse.c driver includes code to set the PWM10 and PWM11 timers to use the 13Mhz clock.
The 13Mhz clock allows us to have 259,998 duty cycle steps.  In other words 0 corresponds to 0% duty cycle and 259,998 corresponds to a 100% duty cycle.  Since an RC servo is expecting a 5-10% duty cycle at 50hz, this gives us a numeric range of about 13,000 values to work with.  We are interested in a pulse with range of 1000-2000us (a range of 1000us) so 1000us / 13,000 step sizes gives us better than 0.1us resolution.
0.1 us resolution gives us 10,000 unique positions across the range of motion of a typical RC servo.  For reference, if we were driving a pan servo on a camera system that was setup for 180 degree coverage, we would have approximately 0.02 degree resolution.
Now, whether or not an RC servo can resolve input signals down to this level of accuracy is a different discussion, but servo technology does continue to improve steadily.

Integer Overflow!

Integer overflow is never any fun.  The math proceeds without reporting any errors and you get the wrong answer.  Grrr.  Note that INT_MAX for an unsigned 32bit integer is 4294967295.  tmar is the integer duty cycle percentage ranging from 0 to 259,998.  num_freq is the max number of duty cycle steps (in our case 259,998 for the 13Mhz clock.)  The formula to compute the tmar value is then: pulse_us * frequency * num_freq / 1000000.
Here’s the problem, when computing this formula with a pulse of 1500us, you get an intermediate value of 19499850000 before dividing by 1,000,000.  This is way larger than INT_MAX so the math wraps around and the result after the divide is totally wrong.
As a work around I observe that frequency (50) divides evenly into 1,000,000 so I can rearrange terms and do that division first.  This keeps all the intermediate values less than INT_MAX.

Getting to 0.1 us Resolution

So far so good if I’m specifying integer us pulse widths to the kernel.  However I want to have 0.1 us resolution because the 13Mhz clock offers that level of resolution.
Doing floating point math inside a kernel driver is considered bad form, and you have to do a lot of horsing around just to get proper machine code generated and linked with the right libraries.  We don’t want to go there, so no floating point.
Instead I will specify timing values in 10ths of a us.  So to request a 1500us pulse I would write a value of 1500us*10 or 15,000.  Writing a value of 15,001 to the driver will give me a 1500.1 us pulse.
Back to integer overflow again.  Specifying a larger input value in the range of 10,000 to 20,000 suddenly pushes me back into integer overflow territory with my intermediate values.  259,998 / INT_MAX = 16519.2 so any pulse longer that 1651.9 us will push me back into int overflow.  The solution is that I observe that 259,998 is divisible by 2, so I can pre-divide this number by 2 and earlier divide 1,000,000 by 2 to get an equivalent answer.  This allows me to specify signal widths of up to 3303.8 us which is well beyond that standard RC range again.  I realize this is a pretty specific solution for this particular hardware and this particular clock frequency, but when dealing with embedded systems, you often have to get specific.

What’s so special about 259,998?

When dealing with low level hardware and clocks, you end up running into very odd ball numbers that some CPU hardware designer somewhere must have thought was cool.  259,998 is an annoying number.  Prime factorization is 2 • 3 • 17 • 2,549.  This means it’s hard to divide evenly with anything and it can be a challenge to try to simplify integer math expressions to eliminate intermediate integer overflow!
Observe that 259,998 * 50hz = 12,999,900.  In computers, kilo often refers to 1000 and mega refers to 1,000,000.  So 12,999,900 / 1,000,000 = 12.9999 Mhz.  Let’s round that up to 13 and I think you see this is the number of clock ticks per second a 13Mhz clock generates.  259,998 is the number of ticks per 1/50 of a second.  (You see, it all makes perfect sense!)

Getting the Updated Driver Code (Driver to Command and Control 4 High Resolution PWM Signals on a Gumstix Overo)

Scott was kind enough to commit my version of the pwm driver to a branch of his omap3-pwm project on github.  You can access the branch here (called “four-channel”):  https://github.com/scottellis/omap3-pwm/tree/four-channel

Future Enhancements

Scott suggested that a nice extension would be to allow the user to select which of the 4 PWM channels are activated and configured when the module is loaded (or via a platform device whatever that is.)

Fedora 15 and Gnome 3

This weekend I took the plunge into Fedora 15 with Gnome 3.  This is a major change from previous versions of Fedora.

Overview

Fedora 15 is very different from previous Fedora releases.  The main reason is the upgrade to Gnome 3 which is entirely different from Gnome 2.  In Gnome 3 your entire desktop experience is completely (and I say completely) changed.  This is no small thing.  As with any change, there is good and bad; some things I like, some things I miss.

Cool thing: gnome-shell

The gnome-shell is something new in Gnome-3.  This isn’t a “shell” in the classic unix sense.  Instead it is really your desktop or your graphical user interface experience.  If you are coming from windows or previous versions of Linux, you might be in for some initial system shock!  Life suddenly got way different.  If you’ve ever used a Mac, you might think Gnome 3 is more Mac like than anything else.

Cool thing: Windows map + dual head display

Hey this is cool: when I press the “windows” modifier key on my keyboard, it pops up a map of my windows and workspacers.  In my primary display (on the left) I see all the windows from my current workspace.  In the secondary display (on the right) I see a selection of my my most commonly used windows from my other workspaces.  Neat feature!  On the right hand side of the primary display I get a map of all my workspaces and windows.  This makes it very quick to find an app or window, move things to different workspaces, etc.

Cool thing: Application launching

If you’ve ever used a modern mac, you’ll have gotten used to a different way of finding apps and launching them.  Gnome-3 follows this general style.  The “start menu” is completely gone with no hint of it left.  Instead you have an applications folder with all your apps.  You can select different categories to limit the options, or start typing part of the name in the search box.  If you have a collection of apps you use quite often, you can pin them on your activities bar so they are always handy to find when you need them.

Cool thing: Desktop recording

Alt+Ctrl+Shift+R – this toggles desktop recording on/off.  You’ll see a little red “record” icon in the far lower right corner of your display to indicate if recording is active.  I sometimes like to record movies of my FlightGear flights so I’ll have to see what kind of performance I can get with this feature.

Cool thing: Dynamic workspace allocation

Coming from the gnome-2 world, I spent quite a bit of time googling & trying to figure out how to configure more than 2 workspaces on my desktop.  (Normally I like to have 6 workspaces for grouping all the windows/apps related to different kinds of tasks.)  Well it turns out that the gnome-3 shell dynamically allocates workspaces on the fly … so you always have one more empty work space.  You can use Alt-1, Alt-2, … Alt-n to hot key between workspaces. When you launch an app from the app folder or the dock, you can middle click on it to launch on the last (empty) workspace. I don’t call any of these things “intuitive”, but once you get the hang of this new way to do things and “understand” the way gnome-3 thinks, it’s slick, and quick, and it’s growing on me quickly.

Cool thing: Desktop search

When you press the “windows” special key on your keyboard or mouse up to the activities corner of your workspace, a search box pops up.  You can start typing anything in this box.  Immediately (and as you type) you are presented with items that match: Applications, Settings, Places and Devices, and event Recent Items (files) from your hard drive.  I’m sure I will still have trouble finding that critical misplaced file when I need it (because I forgot the name, or forgot to copy it from my laptop, etc.), but this should be another great tool for quickly finding what you need when you need it.  I haven’t figured out what qualifies as a recently used file or how the indexer works or what it indexes.  I would like to understand that better.  I’ve seen hints that in the next release of gnome, the search indexer might be expanded to include file contents and not just file names.

Issue: Some things I miss

The new graphical interface gives up some things I have become used to and depend on:

  • The “start menu” is gone.  It’s replaced by an applications folder with application icons that is much more Mac-like (or maybe like a tablet or smart phone application selector.)
  • All my desktop icons and files are gone.  Gnome-3 doesn’t let you litter your desktop with 100’s of files and shortcuts stacked on top of each other any more.  This is distressing.  I like my messes, I like them a lot, I know where to find things!  [Edit] See comment from “AceRoom” below: apparently it is possible to get your desktop icons back if you wish.
  • The trash can on my desktop is gone (now moved to the file manager window.)
  • The “status bar” at the bottom of the screen is gone.  No longer can I see what apps are running on what workspace at just a glance.
  • The “status bar” at the top of the screen is changed.  Now it shows the current app, the time, and a few little icons way to the right.  That’s it.
  • Gnome widgets are gone.  I can’t have a weather applet in my top status bar any more.  Why?  There’s tons of room for stuff like this?  Maybe they will add it later?  Maybe they won’t?  Guess I’ll have to keep my phone handy so I can check the weather when I need to.
  • There’s no date displayed on the status bar of the desktop.  You have to click on the time to see the calendar and remind yourself of the date.
  • So far I haven’t seen if/where the little notification icon comes up to let me know there are new software fixes available to install.  I have been running “yum update” manually to keep my system current.
  • [Edit] Fedora has switched from Open Office to Libre Office.  After a couple spot checks, I haven’t noticed any problems working with office documents.  http://en.wikipedia.org/wiki/LibreOffice#History

Issue: Misleading screenshots on fedoraproject.org?

Minor nits, but when I go to the fedoraproject.org web site and look at the screenshots of fedora 15 … many of them are obviously fedora 14 and bear no resemblance to what fedora 15 looks like.  The web site also advertises a non-linear video editing tool.  That doesn’t show up in the install or anywhere I can find it.  Maybe last minute issues?  I can write these off as oversights, but I usually expect a little better from fedora … they are usually a pretty classy outfit with their act together pretty well.

Issue: Dual head display and workspaces

Problem: I run two displays on my desktop PC.  This was detected by default, however, any window that was at least 50% on the secondary display became “sticky”.  In other words, when I switch workspaces (a key aspect of my daily work flow), all the windows on the second display would follow to every workspace. If I was doing a presentation on a laptop and the second display was a projector, then this would make perfect sense.  But for my daily work, it’s absolutely the wrong way and very annoying.

Solution: Fortunately (as is often the case) a little bit of googling turned up a solution.  The recommendation is to “yum install gconf-editor”, then run it from a terminal.  Navigate to: Desktop->Gnome->Shell->Windows and you should see an option called “workspaces_only_on_primary”.  Uncheck this option.  It will not immediately take effect though, you will need to log out and back in.  Now both displays will participate in workspace switching.

Issue: No audio on Asus M4A88TD-V EVO/USB3 motherboard (Realtek 892) and Kernel 2.6.38

Problem: After the upgrade to Fedora 15, all I hear are random clicks and pops.

Solution: I tried a bunch of things with no progress.  Then I did a complete power cycle and my sound came back.  Weird.  First time I’ve had trouble with the onboard audio with this machine, but I’m back up and going so <whew>.

Tell me where I’m wrong!

If I haven’t discovered a cool gnome-3 or fedora-15 feature yet, please tell me about it.  If something I have an issue with is handled in a different or better way let me know!  I’m learning as I go and I’d love to hear your feedback.  Thanks!

Charles Moore on ABC



This is a story on ABC about the Pacific Garbage Patch.  The story features Charles Moore (a private individual) who has focused his life on researching and bringing awareness to this situation.

North Pacific Ocean Sunsets


Being out on the open ocean is an awe inspiring experience.  The ocean is incredibly powerful and unforgiving.  The wind and waves are relentless.  The sunsets are the most incredible of any place I’ve ever been.  This is my collection from a NOAA research cruise through the Pacific straight north of the Hawaiian Islands:

 

 

North Pacific Debris Gallery

NOAA Debris Research Cruise

In the spring of 2008 I joined the ATI team on a NOAA research cruise into the “North Pacific Gyre”, AKA “North Pacific Garbage Patch” — an area north of Hawaii the size of Texas where floating plastic debris collects.  Plastic can break into smaller chunks but it doesn’t really decompose, or it degrades so slowly that it is accumulating much faster than it is disappearing.  This leads to an increasing colleciton of junk and garbage on the surface of our oceans and is an ecological problem.  I’ll leave it to others to debate the magnitude of the problem, but from a personal perspective, being out there myself and seeing the amount of junk, I was greatly saddened. It’s a big mess that is almost impossible to clean up, and it’s in a remote area that most people do not see.

There were many fascinating, exciting, and challenging aspects to this trip, but here I am simply displaying my picture collection of North Pacific Gyre Junk.

Tracking Ocean Debris in the North Pacific

The Search

On April 2, 2008 I found myself on a 224′ NOAA research ship, the Oscar Sette.  We were sailing about 1000nm north of Hawaii in the middle of the Pacific Ocean. This was day 10 of a nearly 3 week cruise.  Our mission was research. The task for the day was to search for debris. We had entered the North Pacific Gyre two days earlier. This is often called the “garbage patch”. A debris field of floating plastic junk the size of Texas.  It is made up of human generated plastic waste that never really decomposes, instead it very slowly breaks up into smaller and smaller chunks.

A Spotter Sees Something!

Early in the afternoon, the call went out. One of our spotters saw something, and it was much bigger than the ordinary floats and chunks of plastic we had been seeing.  We turned the ship towards the object.  When we pulled up closer we discovered it was a houser line — a giant rope used to secure large ships.

Retreival

When we were close enough, one of the crew members snagged the line.  We hooked it to a hoist and carefully pulled it on board.

The Release

We then attached an ATI gps tracking buoy to the rope and set it free.  The decision was made that the research value of observing the drift of this debris through the ocean currents was higher than simply removing the object from the ocean.  The deck crew then lowered the tangle of rope back into the water and set it free.  Here  you can see it drifting away with the buoy attached (the solar panels at the top just peek above the water line.)

This was THREE years ago now and the buoy is still alive and reporting it’s position twice a day.  Aren’t you curious where it’s been?!?

Drifting through the North Pacific

The following video shows an animation of the ATI tracking buoy on it’s three year journey.

I think this is incredibly fascinating to watch, and the buoy continues to send position updates twice a day, each and every day.  It has solar battery chargers so it could survive a few more years with a little luck.

Check the latest progress of buoy 15FXZ

As of this posting, buoy 15FXZ is still alive and well and drifting around the ocean. You can check up on it’s latest movements anytime by clicking on the following link:
http://www.atiak.com/buoy_maps/
At the top of the map is a drop down menu. Select 15FXZ (should be the very last entry, you might have to scroll), pick a date range if you like, and click “Go”!

Conditions at Sea

It is difficult to capture the magnitude and power of the ocean in pictures.  The waves always somehow look smaller and less impressive through a camera.  I took some video footage while the houser line was pulled up on deck.  You can see the wind, the spray, and how much the ship pitches up and down in the waves.  If you’ve never been out in these conditions, they are pretty typical of the north pacific, but getting tossed around like that 24/7 makes it very difficult to do anything.

Build Your Own Freaking Fast FlightGear PC

Building your own PC

I’ve debated whether it is worth posting an article about building your own PC. Anyone who’s a serious builder can come up with something that fits their budget and performance requirements better than I can. Anyone who’s not a serious PC builder might be better off not messing around with the idea. It’s easy to get yourself into trouble and ruin parts if you don’t know a little bit about what you are doing.  On the other hand, it isn’t that hard, and the end result can be a great system for minimum cost.

The Basics

It isn’t really that hard to build your own PC.  If you are capable of careful work, know how to screw things together, and don’t mind spending the extra time to research and order parts, then it’s really not too bad.  The big payoff in the end is you can have exactly the machine you want at a price that is probably cheaper than anything you could buy off the shelf.  Another plus is that you will have a system you can potentially upgrade in the upcoming months and years to stay current without needing to buy a whole new machine every 6 months.

There are some basic things you will need to buy: a case, a power supply, a motherboard, a processor, memory, a heatsink and cooling fan, a video card, a hard drive, and a DVD drive.

Where do you even start?

This is all motivated because my current desktop PC was creaky and old.  It had been over a year since I had done any upgrades, and my current machine was a cheap, low-end system to start with.

So let me describe my own thought process.  Years ago I used to build all my own machines, but then I kind of gave it up.  Technology changes so fast and I completely lost track of all the different processor sockets, ram types, amd versus intel cpu options, SATA, PCI express, etc.

A few years ago I went to the Dell website and speced out a decent low cost machine.  I ran that for a while and it was fine, so I hopped back onto the Dell site to see what I could find.  Unfortunately by the time I ticked off a couple options to build my own machine, I was way over the budget I was hoping to spend, and I just wasn’t see the options and the level of control to build the machine I wanted — something that would be a killer FlightGear machine.

There are some really great gaming PC builders like Alienware and WidowPC.  I took a look at their web sites and wow! it doesn’t take much to spend several thousand $$$ with one of those places.  I’m sure you get a great machine, but that was way out of my league.  I was hoping to stay well under $1000.  I found another PC builder that seemed more in my pricing ball park: www.cyberpowerpc.com.  In addition they tell you the *exact* parts you are picking and give you tons of options.  Unfortunately I managed to quickly go over budget with them too.  I started thinking about specing out a machine at cyberpowerpc, and then going to an online parts store, buying the individual parts, and putting them all together myself.  But before I got too far through their site, I got completely lost in the myriad of options.

I decided I’d go visit a parts seller directly and see what I could find there.  Two of my favorite sites are New Egg: www.newegg.com (they seem to have some of the lowest prices going, and offer free shipping on many items) and MEI: www.microcenter.com (MEI has a local store in my town and often has good sales if you watch their mailings.)  But alas, I floundered trying to find a set of parts at either of these places.

Sigh … I give up!  I need help!

To The Rescue … !!!

My little brother saved me.  He had already done all the hard research work and had recently built a couple different machines at different price/performance points for his own work.  Thanks little brother!  It really helped to be presented with a complete list of compatible parts as a starting point.  I ended up with a system that was pretty much in my budget and performed better than I was hoping.  In my case my brother sold me some spare parts as part of the deal so I ended up coming out even better than if I was doing this all myself from scratch.

Here is the list of parts and their corresponding prices on newegg:

  • Case: Antec Sonata Proto (black) $65
  • Power supply: OCZ Fatal1ty 550W $70
  • Motherboard:  Asus M4A88TD-V EVO/USB3 $120
  • Processor: AMD Phenom II X4 965 Black Edition 3.4Ghz $140
  • After market heat sync: (from my brother’s surplus) $50
  • Memory: OCZ Gold 4Gb 240-Pin DDR3 1333 SDRAM (PC3 10600)  $50
  • Hard Drive: Seagate Barracuda 1TB 7200RPM SATA 3.0G b/s $60
  • Generic CD/DVD drive: $20
  • Video Card: Palit GeForce GTX 470 1280Mb 320-bit GDDR5 PCI Express 2.0 x16: $260

Total: $835

The Details …

Everyone has their own opinions, different goals and different budgets — one size doesn’t fit all.  The PC world moves fast and I can’t even find the same memory any more.  But generally 4Gb of DDR3 1333 memory is going to run about $50.  Most people will want to make adjustments for their own preferences, their own budget, and the parts that are available at the time.

The case: Antec is a big name in the case world — in case you didn’t know that.  (Also that was a pun in case you missed it.)  The Sonata Proto is a basic medium tower case.  3 x 5-1/4″ bays, 2 x 3.5″ bays, and 4 internal hard drive bays.  It is a solid case, looks clean and professional, has plenty of upgrade potential and has a few nice features.  (1) the external bays are setup for slide in rails, but I didn’t have any rails. 🙁  I looked online to see if I could order some and then checked the manual and found out that each bay cover has the rails tucked into the back side.  I just had to pop them off — wow, how cool is that!  (2) the internal hard drive bays come with anti-vibration gell grommets.  Another little nice extra.  These are things you might not think about at the shop but you sure appreciate once you get home!

The power supply: I just went with the part my brother speced out.  But don’t skimp out here to save a buck.  If you are building a gaming PC or a FlightGear PC, you will want a high end video card and those absolutely suck power.  Modern video cards are powerful self contained multi-core CPU’s … all on a card with their own cooling fans and everything.  The video card I installed required two (2) 25W power cords direct from the power supply to the video card — in addition to the power the card can pull from the PCI express slot.  This is an area where things can get tricky, but definitely check the specs and requirements of your video card and make sure you pick a power supply that can deliver.  I can tell you from personal experience that you can limp on an underpowered or marginal power supply, but add a little heat or do something that pulls a bit of extra current and your system can go unstable and crash or generate errors.  It can be *very* frustrating!  So don’t skimp on power!

Next up is the CPU: your basic choices are between Intel and AMD.  This is where I start to lose track and my eyes glaze over.  Generally it seems like Intel’s fastest processor usually beats AMD’s fastest processor, but you pay a premium for Intel.  AMD usually gives you better bang for the buck.  I went with the AMD Phenom 965.  There’s always a sweet spot in the price curve where going to a faster processor starts costing a *lot* more for just a little bit of improvement.  I can’t afford to buy the best of the best, so I don’t need to pay the ultimate premium to buy Intel’s flagship processor.  I went for good performance and a good price.

Motherboard: One thing to notice when building your own PC is that usually the CPU + Motherboard + Memory need to be carefully matched.  Generally by the time you get around to wanting upgrade in 6-12 months there is going to be a different socket standard for plugging your CPU into your motherboard, there will be a different memory interface standard, and you’ll end up needing to upgrade all three of these at the same time.  It just is what it is …  On my brother’s recommendation I went with the ASUS M4A88TD-V EVO/USB3.  It supports the AMD Phenom processors and DD3 memory.  There are many motherboard options.  Asus is usually a pretty good name and a lot of the variants center around what extra stuff gets bundled onto the motherboard … sound, video, networking, usb ports, esata, and support for other peripherals.

Memory: I went with my brother’s surplus part stock again here, but he only sold me 4Gb.  I decided I needed at least 8Gb total.  But when I went shopping, I couldn’t find an exact match for what I already had.  I poked around, got some help from a tech guy, and came home with a pair of 4Gb DDR modules (2 x 4Gb).  Add that to the 4Gb I already had and I was up to 12Gb total.  Rock on! 🙂  I found that for DD3 1333 memory you are going to be spending about $50 per 4Gb of RAM.

Video Card: This is a critical component of a gaming PC.  I am building a system to run FlightGear which is a professional flight simulator, but my graphics needs are very similar to other high end 3d games.   I have been running nvidia 3d video cards for many years and feel they offer the best drivers and quality for PC game level systems.  Additionally I do most of my work under Linux, and nVidia definitely has the strongest and most solid linux support.  So I go with nvidia graphics hardware, period.  Originally I was shooting for a card in the range of an nVidia GeForce  GTX 450, but the general principle is to get as much as you can afford.   I ended up with a GTX 470 which was more than I could afford … try and explain that to your wife. 🙂

What about Windows Software?  Isn’t that expensive to buy when it doesn’t come bundled with your new 64bit PC?

This is a tough one for me to answer.  Actually it’s easy.  I run Linux.  Go to your old PC, download the latest Fedora (or Ubuntu, or Suse, or your favorite distro) install ISO, burn it to a DVD and you are ready to install Linux on your new PC.  Full 64 bit support for free!!!  If you are a windows geek and insist on genuine MS proprietary software … well that’s tougher.  A lot of people can get a free or discounted copy of Windows through work or school if they can show a work or school purpose for the machine.  It doesn’t hurt to ask — unless your sys admins are psycho and black list you from this point on — not saying that would ever happen.  But seriously, these days 75-95% of what you do is in your web browser anyway.  Linux has open-office, firefox, google chrome, thunderbird, a full development system, flash, skype, gimp and all the tools you would want to use … and most of the time they are free.  Come on!  You are building your own system, you might as well go the whole way and install Linux on it.  Games?  They are just a waste of your time anyway, besides you are building this machine to run FlightGear which works really well in Linux.  If you really want to spend money with Microsoft and really want to play games, get an Xbox360.  Your remaining excuses are now weak and flimsy!  Your wife or girl friend or grandmother doesn’t care; she just wants to get on facebook, play farmville, and look at cute kitty cat pictures, that is just as easy with Linux.  Ok, QED, done deal … L I N U X   6 4   b i t ! ! !

Final Thoughts

You are probably wondering about things that I ignored or skimmed past.  Monitor?  Keyboard? Networking?  Assembly instructions?  Cabling?

Monitor and keyboard?  I just use the one from my last computer.  If you want something bigger or better, go ahead and get it and plug it in.  If you get a super high resolution display, you might need two DVI cables which the GTX 470 supports.  The GTX 470 also has HDMI output and another output that is used in the Mac world for their super high res displays.  Networking? It’s built onto the motherboard.

Assembly instructions?  Well it’s always an excellent idea to skim the manuals for the parts you just bought.  They’ll often times include critical information.  For instance, the ASUS motherboard manual suggests that if you want to boot of your SATA DVD drive, you should plug it into SATA port 5 or 6 and then go into the bios settings and set that port range to emulate IDE.  It turns out the the SATA/IDE setting works on blocks of ports, and you want to leave the lower blocks set at SATA so you can maximize the performance of your hard drive.  But hey, this stuff is fun to figure out, that’s why we build our own PC’s, right? 🙂

If you try building your own PC and get stuck, please hesitate to email me. 🙂  I don’t have time to do free PC assembly support.

Looking at all the options:  building your own PC is still a great way to get a super performing machine at minimal price.  You get to pick and choose all the specific parts and options so you get exactly what you want.  If you are jumping in and haven’t  built a machine in a while or ever, then feel free to use my shopping list (above) as a starting point and then you can make modifications from there depending on your budget and performance requirements.  Spend as much as you can afford!  Work slowly and carefully as you assemble the parts.  Enjoy running FlightGear at 60 fps with all the bells and whistles turned on!

Google Nexus S

This week I upgraded my phone to a Google Nexus S (sold at Best Buy).  I just wanted to share a few thoughts and impressions about the phone.  For the past two years I have owned the original G1 android phone and have really liked the environment and the available free apps.  The last update they pushed out for my old phone was v1.6 and since then a lot has changed with android and with many of the apps.

There are a ton of choices these days with Android based phones.  You can look at screen size, camera megapixels, processor, memory, slide out keyboard or not, and a variety of physical features.  What pushed me over the edge to get the Nexus S is that it runs v2.3.1 Android and every other phone I looked at was still at v2.2.  I know that vendors will probably push out updates for these other phones eventually, but at some point they EOL the phone and you stop getting updates like with my old phone.  So the ultimate deciding factor for me was to get the absolutely newest possible verison of Android.  Honestly I couldn’t tell you one thing that is different between v2.2 and v2.3.1 — am I then shallow for using that as my main criteria? 🙂

I’ve had a couple days now to run my new phone and explore the new features.  There is a lot that is very much the same as my old android phone.  Many (most) of the apps I had on the old phone are still the exact same version on the new phone.  But even if many of the apps are basically the same, there are still many new tweaks and polish to the apps, and overall it is much faster than the old phone.

The Nexus S screen is a lot nicer, brighter, higher res, and just a bit bigger compared to the old G1.  One problem with smart phones is they give you tons of features, but a small screen and an itty bitty keyboard.  They fit in your pocket, but it is hard to do any “real” work with them other than skim your email and respond with short terse messages.  (Notice the popularity of the the ipad which addresses this issue with a much bigger screen.) The Nexus S still doesn’t have a “big” screen and it still fits nicely in my pocket.  But with the bigger brighter screen and much higher pixel density, the over all feeling is that you aren’t looking at your stuff through quite such a small soda straw as with the G1.  I don’t feel nearly so claustrophobic using the Nexus S as I did with the G1.  It still won’t replace a tablet or an ipad, and definitely won’t replace a laptop or PC, but it certainly pushes forward in what you can comfortably do with it.

The voice recognition for searches (browser, navigation, map, etc.) seems to be way more accurate on the Nexus S. This is something I noticed right away.  With the G1 I had a lot of trouble using the voice recognition for anything when I needed it.  The only time I used it was to play around and see what funny mistakes it would make.  The Nexus S actually seems to work really well, and it seems to nail what I say usually on the first try.  With the Nexus S the voice recognition is a useful feature which it never really was on the old G1.

One really cool new feature on the Nexus S is that it can act as a wireless access point for other devices and the traffic gets routed through the phone’s 3G/4G data connection.  When I’m traveling or working away from my office, or stuck someplace that wants to charge you for wifi access I can still connect my laptop up to the internet wirelessly via my Nexus S. From the laptop perspective, it just sees another access point out there; enter the password, click connect and you are up and live on the internet.  I even managed to connect my old G1 (that no longer has cell service) to the internet through the new Nexus S and was still able to do gmail, google voice, calender, web, etc. off the old out of service phone … cool I guess, not that I can think of a reason I’d need to use two smart phones at the same time.  Tethering my laptop isn’t a feature I’ll use every day, but when I do need it, it will be great to have and because it’s wireless, you can share the connection between a couple devices if everyone agrees to play nice.

The built in web browser now has “flash” support so I can go to all those flash sites and see all the spinny, flashy, blinky animated advertisements. Even the real google maps pages work right on the phone inside the browser.   I discovered I can even edit my google docs “Documents” through the phone (although it doesn’t look like I can edit google docs “Spreadsheets” from the phone yet … hopefully that will get added in some future update.)  The Nexus S comes with google earth (not available for my G1) which is kind of cool, but not quite as cool as I was hoping because it doesn’t show any of the buildings like the PC version does.

The other “new” (for me) feature is the two finger “pinching” to zoom in or out.  This is really nice when browsing web pages or maps.  Also, in maps and google earth you can use 2 fingers to “rotate” the view which is intuitive and fun.  With maps you can drag two fingers up or down to change from a more top down to a more 3d perspective vantage point.  More cool features my old phone didn’t support.

So all in all, could I have survived another year or two on the old phone running andoid-v1.6 and been just fine?  Sure!  I could still tether my laptop via the usb connection and get on the internet wherever I needed it.  Live desktops aren’t a critical feature, the internet is still the internet. The new phone probably isn’t so much better that it will change my life.  But it is faster, newer, more polished, has more megapixels on the camera, and has lots of fun little (and a few big) new features that I’m discovering as I use the phone more and more.  So for a few special days I am having a blast with my new phone.

In another week or so I’ll have found all the new features, figured everything out, and have gotten used to it all and it will seem normal.  Then I’ll walk into a tech store next month and I’m sure they will have 10 new phones that are all twice as good as this one … and ughhh 1 year, 11 months till I can upgrade again at the cheaper price … life is torture!!!  At least I can have happiness for a couple days before my life returns to it’s normal “way behind the technology curve again” existence. 🙂

And then one day Android v2.4 will show up automatically on my phone with all it’s new spectacular and glorious features and for a few more days life will be good!  I’m just hoping that because this is the google endorsed phone, I’ll get the newest versions of everything before everyone else!  (At least for a while…)