RSS Feed

My random notes about the stuff I've done

Archives for Projects

Pleco Phase01 completed

0 Comments

I started playing with microcontrollers in 2005 and, if not at the very start, at least very quickly I decided to aim to have some sort of remote controlled Linux device with controllable camera with digital wireless communication. Now, 6 years later, I have completed my first phase :)

Couple of photos of the earlier devices are shown in the project page.

After several planning iterations and code rewrites I ended up using Qt both on the remote controlled Gumstix and on the GUI controller. I decided that trying to optimize everything from the memory and CPU consumption to the network bandwidth just isn’t worth the time spent in implementing it. The most CPU intensive task is the video encoding to H263 and that’s done in the DSP. I’m running MeeGo on the Gumstix and it provides e.g. the GStreamer plugins for the DSP.

Using Qt framework with self made simple protocol over UDP I got the Phase01 code implemented quite quickly compared to my previous efforts. The protocol allows low priority packets (like periodic statistics and video stream) to be lost and guarantees the passing of high priority packets (control commands etc.). Also only the latest control command of each type is retransmitted, i.e. an old packet is not retransmitted if a new overriding command has already been given.

The controller GUI shows the states the slave sends, like motor speeds, WLAN signal strength, CPU load average and some protocol statistics like round trip time and the number of retransmissions.

Currently the motors are controlled using the a,s,d,w keys in 10% steps and the camera is controlled dragging the mouse left button pressed on top of the video window.

Here’s a video (direct link) of the Phase01. You need HTML5 video capable browser with Ogg Theora/Vorbis codecs.

Filed under gumstix, MeeGo, Projects
Apr 5, 2011

Suspending the Workstation

0 Comments

I’ve always kept my computers up’n'running day and night although they are mostly idle during the time I sleep or labour at work.

I’m too lazy to shutdown the whole thing few times a day and then but the electricity bill is getting quite big, so I started to think about suspending the computer.

Of course the whole suspend feature has been used in laptops for ages but I guess not that much in Linux workstations. Occasionally I need to access my workstation remotely but that’s why there’s wake-on-lan and I still have my firewall computer always running.

I installed a package called hibernate and configured it a bit to suspend to RAM instead of suspending to disk. It takes only a few seconds to come up from the suspended state and I have all my windows right where I left them. Only the network connections get cut off, which is a bit annoying as I use SSH for certain things. There have been one or two occasions during the over a hundred suspends I’ve done so far, where the workstation hasn’t come up without extra kicking.

I measured the power consumption of two workstations with two different energy meters. One is a proper one from the electric company and one is a cheap one from a local store.

I conducted one to three measurements for each state and in the table below are the typical values.

Computer State W (Good meter) W (Cheap meter)
1 Idle 55 65
1 Suspend 2 23
1 Off 1 23
2 Idle 98 87
2 Suspend 2 21
2 off 1 19

Based on these results, you do save some power by suspending the computer (and the cheap meter is close to useless). The actual amount of saved electricity depends on the total consumption in the idle state. Newer computers have decent power management and my workstation doubles the consumption from 100W to over 200W when I e.g. start an 3D game.

Filed under Projects
Mar 27, 2011

Maemo Service Handler

5 Comments

It’s convenient for a Maemo developer to have sshd and syslogd running on the device but on normal use they just use resources and wear out the flash.

I made a little Control Panel plugin with zuh‘s help for starting and stopping System V style init script actions. It uses invoke-rc.d for starting and stopping services and update-rc.d to add and remove services in system boot time actions.

It has only basic features implemented, i.e. it can start and stop services and add and remove them from startup routines.

TODO:

  • Speed up starting time by getting rid of fork+exec
  • Add infoprints about the success of execution commands
  • Sort services alphabetically
  • Add option to hide “built-in” services

Maemo Service Handler CPA

Be aware that this includes a suid root binary for executing the System V scripts!

The plugin UI is written with C++ so you need to have extras repository on your catalogue list for gtkmm libraries:

Web address: http://repository.maemo.org/extras/
Distribution: bora
Components: free non-free

The plugin can be installed from my maemo repository:

Web address: http://tuomas.kulve.fi/debian
Distribution: bora
Components: maemo

Filed under Maemo, Projects
Jan 27, 2007

Maemo screen grabber

14 Comments

Note! This is now in garage.

I made a simple wrapper for osso-screenshot-tool. It is started from the Others menu and after a 5 second delay it takes a screenshot and saves it to Images folder.

You can install it to your n800 from my maemo-repository:


Web address: http://tuomas.kulve.fi/debian
Distribution: bora
Components: maemo

Or with single click install.

Chinook

Updated for Chinook.


Web address: http://tuomas.kulve.fi/debian
Distribution: chinook
Components: maemo

Or with single click install.

Filed under Maemo, Projects
Jan 17, 2007

Speexcomm proto released

0 Comments

We finally released the proto version of Speexcomm. It still has bugs and limitations, but I was too eager to move on to the version 1. Now the Trac and SVN are also public. All contributions are welcome :)

Filed under Projects
Oct 29, 2006

Tiny Downloader 0.2.0 released

0 Comments

I changed the address type in the downloadable hex file from byte address to word address. Now over 256 byte codes work too. I also added padding of record lines, so all lines are now 32 words. And since I hope this works now enough for us, I reorganized the code a bit and increased the version number to 0.2.

Filed under Projects
Aug 27, 2006

Tiny Downloader 0.1.1 released

0 Comments

I had to fix the 256 byte limitation for HEX files since I tried an example code that was more than that. I also fixed the 16F88 only limitation. Now the downloader accepts any Pic ID unless explicitly asked to verify the ID.

Filed under Projects
Aug 19, 2006

Added project Tiny Downloader

0 Comments

Lately I’ve been interested in PICs. We bought a 16F628 only to realize that it requires too much work to always flash the program to the chip with a separate programmer. So, we bought some 16F88s, because they support bootloaders. Linux support seems to be a bit inadequate and there’s no Linux application to download a software to the bootloader of our choice, so I started to make my own downloader. Currently it works but only with a very limited number of different HEX files.

Filed under Projects
Aug 12, 2006

Added my old HW/Misc projects

0 Comments

I reorganised my pages a bit and moved some of my old hardware etc. projects under the new projects page.

Filed under Projects
Jul 23, 2006

Added project pwgallery

0 Comments

Penguin’s Web Gallery will be a rewrite of my old and ugly gwebgal. Currently only some plans and glade UI have been done.

Filed under Projects
Jul 22, 2006