Heimdall on FreeBSD

Heimdall is an Open-Source utility to work with Android devices manufactured by Samsung. It allows to flash firmware components into memory via FastBoot/ODIN+USB. I have created a patch to build this nice tool on FreeBSD OS (QT gui works as well, to build it you need qt-{gui,qmake,uic,moc,rcc,…} packages installed). When patch is included into the project sources and release is done, I will prepare a FreeBSD port for this nice utility which is only missing a memory dump and live boot to be totally perfect :-)

Read More

LibSWD 0.6 release

I am happy to announce a new release of LibSWD-0.6! Most important feature of this release is the standalone Application with an example of Command Line Interface (CLI), FTDI driver and ARM Cortex-M3 Core Debug and Flash support demonstration. Please report issues via Ticket System. Have fun! :-)

KT-LINK FT2232H based interface on FreeBSD

I have created a simple patch for FreeBSD Operating System to detect and support FT2232H based KT-LINK interface. FTDI chips are already supported using uftdi driver and they can provide various serial and parallel protocols over USB such as RS232, JTAG, SWD, SPI, I2C, 1Wire, etc. My patch allows to use RS232 port on the KT-LINK which in conjunction with Minicom terminal software allows to talk to the Serial Console Port on various embedded systems. KT-LINK is really nice inexpensive (50EUR) and versatile tool for embedded system developers, now it became all-in-one tool on my FreeBSD box :-)


YouTube and HTML5

I have found very simple solution on how to access YouTube videos that require Flash using HTML5 player. Although front site may not support HTML5 video player, YouTube usually allows to embed videos to other sites, they also should use WebM codec developed by Google. If you have a video that does not work in HTML5 by default try to run it in embed player by URL modification – replace “/watch?v=” with “/embed/” and it should work! :-)

Example: http://www.youtube.com/watch?v=M84Y6VXAIaU -> http://www.youtube.com/embed/M84Y6VXAIaU

OpenOCD and LibSWD integration complete

Patches that integrate LibSWD with OpenOCD has been already sent, so the platform independent Serial Wire Debug in Open-Source becomes a reality! Mr. Gerrit takes care of the source code review part, while Mr. Jenkins takes care of proper binary build for various platforms and operating systems. This is the right moment to make use of developers mailing list for feedback, asking questions, blaming, testing, adding new features and voting to accept the patches, so the code becomes an integral part of the OpenOCD release! :-)

Orange Labs provided R&D environment for initial stages of the research. Warsaw University of Technology made this possible as part of my MSc and PhD thesis. Krzysztof Kajstura designed and provided his generic KT-LINK (FT2232H based) interface to work with. David Brownell first introduced the Transport layer in OpenOCD in 2010 to split Target from JTAG. Simon Qian was working in parallel on his own SWD implementation for a Versaloon interface (as part of intelligent firmware). Øyvind HarboePeter StugeSpencer Oliver, Rodrigo Rosa helped me on GIT usage and OpenOCD internals,  Freddie Chopin helped me a lot with commited patches to match OpenOCD coding standards, Akos Vandra helped me to test functionality as the program was created… and my other friends should be also noted here for their support :-)

Power of the few outweights power of the many! Thank you for your support! :-)

Open Web and Multimedia

I am happy to notice slow withdrawal of closed-source solutions such as Adobe Flash (and so available only on selected platforms) from the web. When I have working Open-Source and (mostly) BSD-based web browser (Chromium) with some commercial support (Google) at least to display H264 encoded multimedia content (using Open-Source x264 software implementation), and there is HTML5, I start to consider Vimeo a better option than Google’s YouTube, if we speak of quality.

Although Google develops Open and Free multimedia codec called WebM, at the same time they use annoying commercials that makes WebM-ready videos unavailable in most cases on HTML5 YouTube and push users towards Flash anyway, as opposed to Vimeo where all H264 videos works flawlessly in HTML5…


I was even more surprised to see for the first time a very colorful, scalable, interactive and full of multimedia content website of Jennifer Vaughn (created by Phil Giampi) that use NO closed-source Adobe Flash at all!! This website works flawlessly in Chromium browser on my FreeBSD Unix style desktop which use only Open-Source and Free-Software components and embeds Vimeo content. Thank you for supporting high quality open web (although its not totally free)! :-)

What about WebM? Google at one hand creates Free and Open standard such as WebM, but on the other hand Google does not seem to support it at all – neither in its own projects (see advertising with Flash on YouTube that blocks HTML5) nor in external projects (see Mozilla/Firefox struggling alone to promote WebM, see Google Chrome that simply buys restricted H264 license and thus promotes the competitive standard). I think it might be cheaper for Google to make H264/X264 free to use (at least as renderer like Microsoft did) rather than investing into something that is not going to be used anyway… What is the internal organization of Google? Do people need to fight for their projects against each other inside? Why there is no global view for better coordination? This seems to be a great waste of energy, WebM seemed to be very promising Free and Open Standard :-(

LibSWD 0.5 Released

LibSWD 0.5 is out! It brings mainly the rename of all function prefix due API conflicts with other existing solutions.

Please visit Project Website for more information :-)

LibSWD 0.4 Released

LibSWD 0.4 is out! It brings various bugfixes and improvements, but most of all stable API to be used with OpenOCD and other external applications.

See Project Website for more information :-)

LibSWD on FedCSIS 2012

“LibSWD serial wire debug open framework for low-level embedded systems access” has been presented on FedCSIS 2012 international conference and the paper has been already published by IEEE Xplore Digital Library.

All my publications are listed on Google Scholar.

CeDeROM BCI on ITiB 2012

“CeDeROM Brain Computer Interface” has been presented on ITiB 2012 conference and the paper has already been published by Springer Link.

All my publications are listed on Google Scholar.

First steps of LibSWD and OpenOCD

The LibSWD and OpenOCD has just made its first steps into flash memory access and writing program code to the ARM Cortex-M3 based Stm32Primer2 device using cheap and generic FT2232H‘s based JTAG/SWD KT-LINK interface :-) The current connection speed is around 10sec/1kB but still I have some ideas on how to improve it, even with the USB bottleneck. The LibSWD is platform independent, so it can drive any other type of hardware (RLink, GPIO based, Parallel Port, etc), also it can be uploaded into dedicated hardware dongle if necessary :-) Feedback and testing are welcome :-)

You can get the code from remote GIT repository at http://repo.or.cz/w/openocd/libswd.git. The project implementation details and history is at http://stm32primer2swd.sf.net/.

%telnet localhost 4444
 Connected to localhost.
 Escape character is '^]'.
 Open On-Chip Debugger
 > halt
 target was in unknown state when halt was requested
 > flash probe 0
 device id = 0x10016414
 flash size = 512kbytes
 device id = 0x10016414
 flash size = 512kbytes
 flash 'stm32x' found at 0x08000000
 > stm32x mass_erase 0
 stm32x mass erase complete
 > flash write_image toggle.hex
 wrote 1936 bytes from file toggle.hex in 18.636387s (0.101 KiB/s)

KT-LINK interface driver for UrJTAG

I have sent patches with KT-LINK interface driver (FT2232H based, full-featured, low-cost, SWJ capable design by Krzysztof Kajstura) working in JTAG mode for UrJTAG low-level access software utility with GNU license. I have also created a dedicated fork of UrJTAG for LibSWD integration, which is open and available at http://repo.or.cz/w/urjtag/libswd.git. When the job on LibSWD error handling is finished and fully functional with OpenOCD, I will make a release of LibSWD that will be also integrated with UrJTAG using git submodule mechanism just as in my OpenOCD+LibSWD fork :-)

Serial Wire Debug for ARM

I have started my works on implementing the Serial Wire Debug (kind of JTAG alternative for ARM-Cortex Cores) for Open-Source OpenOCD and UrJTAG utilities. You can watch the progress at:


Project type: Open
Status: Work in progress…

Windows 7/Vista Installer

The new Microsoft Windows Vista/7 brought also new revolution to the installer and bootloader components. If you are in that group who gets their OS preinstalled on the computer and no backup DVD is attached, then you have really bad luck.

If MBR gets modified Windows won’t boot anymore, unless you use installer disk to fix the bootstrap. But hey – you may ask – where is my installer disk, I only got the preinstalled system with rescue partition on the hard drive! So if you dare to install BSD, Linux, or any OS other than Windows, beware and get the installer disk first. Also note that this is not Microsoft duty to provide that system disk, but the Manufacturer, so good luck with getting back what you paid for.

The other issue in Microsoft Windows Vista/7 installer is the nasty welcome screen that lets you select the language for further installation – but, in fact, there is no “Next” button and the list is “one click”, so if you click anything except your language on the list, there is no other choice but to use this foreign language for the installation process – because there is neither “Back” nor “Restart” button (like in the FreeBSD and Linux installers) on the following screen. You can only reboot the computer and wait few more minutes for the installer to load again… assuming that you have the disk and won’t click anything wrong on the welcome screen ;-)

Ah, by the way – you won’t get into fixing the previous installation if the active partition has changed and does not point to windows installation anymore. Also be prepared and download Ethernet Adapter drivers because fresh install does not contain any of them bundled, so in order to download all of the drivers you need at least network up and running. So called “backup disk” contains only system, no drivers.

Now tell me who really creates piracy?

OpenOCD on FreeBSD

My port of OpenOCD has just been committed. Enjoy Open On-Chip-Debugger on FreeBSD! =)

Chłodzenie wodne komputera

Bardzo często zdarza się, że chłodzenie wiatrakami jest głośne i uciążliwe. Tej wady nie ma chłodzenie wodne, które zapewnia praktycznie niesłyszalne odprowadzanie ciepła z elementów aktywnych kopmputera, co też było celem tego projektu.

Read More


Just a little hardware hack to add internal microphone to a laptop that was missing this nice and useful function :-) Small microphone was used, taken out from the broken cellphone, plus some wire, soldering and patience.

Read More

USB Przedni Panel

Posiadacze starszych obudów ATX, na przykład niezniszczalnego Enlight’a, mogą czuć się trochę “do tyłu” jeśli chodzi o wygodę użytkowania, głównie z powodu braku wyprowadzenia na przód obudowy gniazdek multimediów/USB. W tym projekcie pokażę jak łatwo i za darmo można wykonać przedni panel USB.

Read More

Własne Sterowniki do Matlab

Tworząc nowe urządzenia czy systemy o dużym stopniu zaawansowania, musimy posiadać mechanizm weryfikacji wyników, którym może być MATLAB. Aby przesyłać dane do matlaba, można wykorzystać gotowe toolbox’y które obsługują jedynie standardowy sprzęt lub samemu napisać sterownik własnego urządzenia – co daje większe możliwości w dostosowaniu metody do potrzeb, nie wymaga też żadnych dodatkowych licencji.

Typ: Otwarty
Status: Zakończony

Read More

LIRC: Linux Infrared Remote Control

Wygodne sterowanie odtwarzaczem muzyki, filmu czy jakimkolwiek innym programem/funkcją komputera, przy użyciu praktycznie dowolnego pilota podczerwieni, jest sprawą zaskakująco łatwą – a to dzięki systemowi Linux Infrared Remote Control.

Read More


Zakupiłem klawiaturę BTC-6300, która posiada kilka guzików “multimedialnych” nie działających w X11 pod UNIX’em. Postanowiłem więc stworzyć jej model (przydatny jest przy tym szczególnie program XEV) i cieszyć się zaletami dodatkowych przycisków. Poza tym klawiatura jest niesamowicie wygodna i bardzo dobrze wykonana, dzięki czemu zdecydowanie wygrywa z droższymi konkuterntami. Niski skok, jak w laptopach, sprawia że można na niej pisać jeszcze szybciej. I faktycznie, po kilku miesiacach uzytkowania pisze ok 3x razy szybciej :-)

ASUS A7N8X-VM i AMD Sempron

Postanowiłem sprawdzić czy na płycie głównej A7N8X-VM (przewidzianej tylko dla prcesorów AthlonXP) można się uruchomić procesor AMD Sempron. Sprawa sprowadzała się do wgrania nowego BIOS’u w wersji beta. Na wcześniejszych wersjach płyta odpalała się, ale bez śladów życia. Nic dziwnego, że mam zaufanie do płyt ASUS’a :-)

Read More


MIDI MC, czyli modularny kontroler midi, jest urządzeniem które może sterować innymi urządzeniami poprzez magistralę MIDI (na przykład sprzętem muzycznym, programami komputerowymi albo sprzętem do wizualizacji). Największą zaletą urządzenia jest budowa modularna – układ może posiadać maksymalnie 16 modułów, po 16 przycisków i 16 potencjometrów (gałek/suwaków) każdy.

Read More


Projekt zespołowy Studenciego Koła Inżynierii Kosmicznej stanowiący część komputera pokładowego satelity SSETI ESEO. Moduł odpowiedzialny jest za stworzenie redundantnego medium komunikacyjnego wymiany danych pomiędzy podsystemami satelity poprzez magistralę CAN. Poniżej udostepniam dokumentację techniczną w języku angielskim.

Read More


Prosty program dla windows konwertujący tekst na alfabet morse’a i na odwrót. Napisany w Borland C++ Builder. Ciekawą funkcją jest wbudowany telegraf, który umożliwia wprowadzenie przyciskiem ciągu kresek i kropek, które dalej mogą być zamienione na tekst. Do translacji wykorzystuje słownik, który można edytować. 



Projekt zaliczeniowy z programowania w C++ – rysowanie figur geometrycznych przy użyciu trybu graficznego w systemie SunOS. Wykorzystuje bibliotekę SDL i OpenGL.Kompilacja gcc umożliwia uruchomienie programu na wszystkich platformach obsługiwanych przez bibliotekę SDL (UNIX, Windows, konsole).

Read More


Projekt zaliczeniowy z programowania w C – rysowanie figur geometrycznych w trybie tekstowym. Wykorzystuje ncurses, może być skompilowany gcc i uruchomiony w środowisku UNIX. Docelowym systemem był SunOS. Rysowanie geometrii napisane od podstaw – przemyślane w dwa tygodnie, napisane w jedną noc ;-)

Read More


Prosty program dla windows umożliwiający wygenerowanie listy współrzędnych punktów obrazu w zadanym układzie współrzędnych, eksport obrazka z naniesionymi punktami oraz eksport listy punktów do pliku tektowego. Oryginalnie narzędzie ułatwiające analizę obrazów medycznych stworzony dla znajomego fizyka. Jak się później okazało, program o znacznie szerszym zastosowaniu.

Read More


BX MOD to sposób na uruchomienie procesora Intel z rdzeniem Tualatin, na płycie głównej Slot1 z chipsetem i440 BX. Okazuje się, że dosyć łatwo można obejść zmiany w wyprowadzeniach nowych procesorów, modyfikując dobrą przelotkę Slot1<->FCPGA. Erio – dzięki za informacje o możliwości takiej modyfikacji!

Read More


Sieć blokowa sięga swoimi korzeniami roku 2000, kiedy to grupa trzech entuzjastów postanowiła połączyć swoje komputery w sieć (10MBit, koncentryk + hub). Później pomysł rozwinął się i rozrósł do kilkunastu stacji roboczych z dostępem do internetu (SDI). Z czasem sieć wzbudziła dużo większe zainteresowanie i po gruntownej modernizacji (100MBit full-duplex, switching, łącze 4MBit), aż do chwili obecnej składa się z ponad 40 komputerów.

Uczestniczyłem aktywnie w każdym etapie rozwoju sieci. Prowokowałem dalsze zmiany i rozwój. Strona którą czytasz kiedyś była serwowana z tej właśnie sieci. Obecnie nie mieszkam już w Kielcach, a siecią zajmuje się “Stoku” – jeden z młodych lokatorów naszego bloku posiadający smykałkę do komputerów.