Flashing Samsung Galaxy S (I9000) ROMs with Heimdall

This Tutorial is just a documentation of how I flashed my Samsung Galaxy S (I9000) using heimdall with Darky’s Rom v10.1, follow the steps at your own risk. I am in no way liable for any damage caused to your phone following these steps. I would advise reading up on flashing before proceeding along with pre-reading the guide first.

If you don’t know what you’re doing, you should probably not do it.

For more information, help and most anything check out xdadevelopers forum and DarkysRom.com

This guide is using a fresh install of Ubuntu 11.04 on a memory stick, I was unable to get heimdall installed on Fedora 15 or Ubuntu 10.04.
For this guide I will use Darkys Rom v10.1, however it should work for all ROMs that come with the correct files, as shown below.

Installing Heimdall

First install the Qt Gui libraries:

 sudo apt-get install libqtgui4

Once that’s installed head over to the heimdall website and download heimdall and the frontend for it, here I went for version 1.1.1 as the latest version (as of writing this guide 1.2.0 does not have a frontend).

Here simply download the .deb file and run it once it’s downloaded, you should be able to install them no problem.

(direct links for the version used in this guide)
Heimdall – https://github.com/downloads/Benjamin-Dobell/Heimdall/heimdall_1.1.1-1_i386.deb
Heimdall-frontend – https://github.com/downloads/Benjamin-Dobell/Heimdall/heimdall-frontend_1.1.1-1_i386.deb

Getting The Files

Download the ROM you wish to flash your phone with, for example download Darky’s Ressurection v10.1.

Extract Darky_Resurrection_10.1_i9000.zip
Inside also extract Darky_Resurrection_10.1.tar

You should have the following files:

Darky_Resurrection_10.1_i9000 (folder)

  • Darky_Resurrection_10.1 (folder)
    • boot.bin
    • cache.rfs
    • dbdata.rfs
    • factoryfs.rfs
    • modem.bin
    • param.lfs
    • Sbl.bin
    • zImage
  • Odin3 v1.3,exe
  • Odin3 v1.7.exe
  • s1_odin_20100512.pit

Preparing Your Phone

Make sure you have full battery and disabled all lagfixes.

Flashing The Phone

Press Alt+F2 and then type “heimdall-frontend” and hit enter.

Add the files to the correct heidmall options as so:

Repartition

PIT : s1_odin_20100512.pit

PDA/Code

FactoryFS : factoryfs.rfs
Kernel(zImage) : zImage
Param.lfs : param.lfs
Primary BootLoader : boot.bin
Secondary Bootloader : Sbl.bin

CSC

Cache : cache.rfs
Database Data : dbdata.rfs

Other

Modem : modem.bin
Recovery :

Finally put your phone into download mode.

Once your phone is in downloadd mode, make sure it’s connected via USB and then press start on Heimdall.

After a few minutes your Heimdall will say Finished. Boom you’re done. Just wait for your phone to finish doing whatever it’s doing and you should end up back at the home screen soon enough.

GitHub: Agent admitted failure to sign using the key.

Upon testing my GitHub setup on my home computer I got the following error after inputting this:

ssh git@github.com

Returned:

Agent admitted failure to sign using the key.
Permission denied (publickey).

You’ll need to run:

ssh-add ~/.ssh/id_rsa

Make sure to enter the passphrase for the ssh key you generated.

GNOME 3 – Delete Key Not Deleting/Working in Nautilus

In GNOME 3 it seems that the keyboard shortcut to delete a file in Nautilus is actually Ctrl+Delete, this is fine I guess if it’s trying to stop people accidentally deleting files or something but it’s pretty annoying.

To change the keyboard shortcut from Ctrl+Delete back to the usual Delete do the following:

Open a terminal and type:

dconf-editor

If you don’t have it, install it the usual way.

In the application that just opened, on the sidebar click:

org > gnome > desktop > interface

And check the box entitled: can-change-accels.

Now, leave this window open and open up Nautilus.

Select a file that you want deleting and then click on Edit in the Nautilus menu, hover over the Move To Trash button and here press the button you wish to assign to the action, so for example Delete. You may have to press it twice (the first time it will remove the old key-binding and the second will assign it the new one.)

Go back to dconf-editor and uncheck the can-change-accels option to stop any other keyboard shortcuts being changed and you’re all done!

Fedora 15 Post Installation Guide

Install RPM Fusion

su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm'

http://rpmfusion.org/Configuration

Enable unsupported video and audio codecs

Get enhanced audio and video support in applications that rely on GStreamer:

sudo yum install gstreamer-plugins-ugly gstreamer-plugins-bad gstreamer-ffmpeg

Get enhanced audio and video support in applications that rely on xine backend:

sudo yum install xine-lib-extras-freeworld

http://rpmfusion.org/FAQ

Install Chromium Browser

Make a file called “fedora-chromium-stable.repo” in /etc/yum.repos.d/ and open:

sudo gedit /etc/yum.repos.d/fedora-chromium-stable.repo

Paste in the following, save and exit:

# Place this file in your /etc/yum.repos.d/ directory

[fedora-chromium-stable]
name=Builds of the "stable" tag of the Chromium Web Browser
baseurl=http://repos.fedorapeople.org/repos/spot/chromium-stable/fedora-$releasever/$basearch/
enabled=1
skip_if_unavailable=1
gpgcheck=0

[fedora-chromium-stable-source]
name=Builds of the "stable" tag of the Chromium Web Browser - Source
baseurl=http://repos.fedorapeople.org/repos/spot/chromium-stable/fedora-$releasever/SRPMS
enabled=0
skip_if_unavailable=1
gpgcheck=0

http://fedoraproject.org/wiki/Chromium

Install Flash

Download the YUM for Linux version from the adobe site – http://get.adobe.com/flashplayer/

Run the following in the folder you downloaded the file to:

su -c 'rpm -ivh adobe-release-i386-1.0-1.noarch.rpm'

Import the GPG key:

su -c 'rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux'

In 32bit run:

su -c 'yum install nspluginwrapper alsa-plugins-pulseaudio flash-plugin'

on 64bit run:

su -c 'yum install nspluginwrapper.{x86_64,i686} alsa-plugins-pulseaudio.i686 --disablerepo=adobe-linux-i386'
su -c 'yum install flash-plugin'

If you’re using Firefox, that should be all done but if you’re using Chromium you’ll need to open Firefox and play a video then close it and run the following:

32bit:

sudo ln -s /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/chromium-browser/plugins/libflashplayer.so

64bit:

sudo ln -s /usr/lib64/mozilla/plugins-wrapped/nswrapper_32_64.libflashplayer.so /usr/lib64/chromium-browser/plugins/nswrapper_32_64.libflashplayer.so

Close and re-open Chromium and head to YouTube to check that it’s working.

http://fedoraproject.org/wiki/Flash

Install Dropbox

Download and install the correct rpm for 32 or 64 bit from the Dropbox website – http://www.dropbox.com/downloading.

Follow this guide to remove the YUM errors you may encounter once the package is installed – http://alexsleat.co.uk/2011/05/24/how-to-fix-error-cannot-retrieve-repository-metadata-repomd-xml-for-repository-dropbox-please-verify-its-path-and-try-again/ .

Install VLC

sudo yum install vlc

HowTo: Disable Mouse Scroll to Switch Desktop – OpenBox

Open up the openbox config file, it should be located in /home/username/.config/openbox/ but if it’s not you might have to do a little digging.

nano /~.config/openbox/rc.xml

Find the following lines and remove or comment them out, you can use Ctrl+W in nano to find:

      
        
      
      
        
      

Note: XML comments are as follow:<-- Comment -->

Save with Ctrl+X, Y, Enter (if you’re using nano) and restart OpenBox (Preferences -> OpenBox Config -> Restart) and all should be done.

Kinect Development – Day 1

Head over to this page if you want some tutorials on getting started with the Kinect and libfreenect, I’ll update more as time goes on and I have free time.

I’ve been meaning to grab myself an Xbox 360 Kinect for a while, not because I’m a big motion controlled game fan but for machine vision development. Within the first month of the Kinect open source drivers being released the coolest things were seen, from motion controlled media centres to 3D modelling. I’ll admit, I’m a little late to the game, mostly due to the amount of work in my final year at university and other general business. Over the summer I’ll have plenty of time to do a couple of projects and hopefully come up with something cool and contribute to the scene.

Anyway enough of the small talk, I’ve decided to blog in as much detail the journey through the development, from the installation of the libraries to writing the first and last bit of code as a sort of a set of tutorials for anyone else who wants to get into it.

There are currently two main sets of drivers/libraries out there libfreenect and OpenNI both sporting hip, cool, open source names. So which one do you choose? Well, here’s a brief description of both.

Let’s start with OpenNI, these are the Official PrimeSense (the people that Microsoft paid to actually create the Kinect) these allow access to audio, video and depth with the addition of PrimeSense’s NITE Middleware. NITE is the software library used for skeletal tracking, hand gesture recognition and scene analyzer (used to separate figures in the foreground from the background) .

Alternatively there is the libfreenect libraries, from the community over at openkinect.org. While these are admittedly lacking slightly in features such as skeletal tracking and hand gesture recognition they much make up for it in the dedication to open source and the creation of the best suite available. These have access to video, microphones, motors and LED with speakers currently being worked on. They work under a variety of language wrappers for most OS’s and will of course by my personal library of choice.

Fortunately, you won’t have to decide which one you’d prefer ’cause you can run them both on the same machine but you’ll have to look into licencing information for releasing projects with OpenNI so it’s unlikely you’ll want to combine them (or even allowed?).

libfreenect Installation:

OpenKinect’s getting started page provides a well enough documented installation guide that anyone should be able to get them up and running under Windows/Linux or OSX. With Ubuntu being the distro of choice for installation guide. - http://openkinect.org/wiki/Getting_Started

If you’re running Arch, there are a few AUR packages available however they all seem to have lacked updates for a few months but the manual build is pretty simple on the getting started page, I’ve also added a quick list of commands to get you there:

Grab the git copy of the libraries:

git clone https://github.com/OpenKinect/libfreenect.git
cd libfreenect/

Make, install:

mkdir build
cd build/
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib64/

Add your user to allow access to the connect by creating a group called video and adding your user to it:
note: this can be skipped if you don’t mind running as root/sudo

sudo nano /etc/udev/rules.d/66-kinect.rules
sudo usermod -G video username

Test the kinect with the example program:

bin/glview

If all went well you should have seen a sight similar to the screenshot above, if not check out the OpenKinect page for more information and see if the problems you’re having haven’t already been resolved.

wicd Error During ArchBang Update

error: failed to commit transaction (conflicting files)
wicd: /usr/lib/python2.7/site-packages/wicd/__init__.pyo exists in filesystem
wicd: /usr/lib/python2.7/site-packages/wicd/backend.pyo exists in filesystem
wicd: /usr/lib/python2.7/site-packages/wicd/configmanager.pyo exists in filesystem
wicd: /usr/lib/python2.7/site-packages/wicd/dbusmanager.pyo exists in filesystem
wicd: /usr/lib/python2.7/site-packages/wicd/logfile.pyo exists in filesystem
wicd: /usr/lib/python2.7/site-packages/wicd/misc.pyo exists in filesystem
wicd: /usr/lib/python2.7/site-packages/wicd/networking.pyo exists in filesystem
wicd: /usr/lib/python2.7/site-packages/wicd/wnettools.pyo exists in filesystem
wicd: /usr/lib/python2.7/site-packages/wicd/wpath.pyo exists in filesystem
Errors occurred, no packages were upgraded.

Remove wicd:

sudo pacman -R wicd

Re-update the system:

sudo pacman -Syu

Re-install wicd (and wicd-gtk gui if you want that too)

sudo pacman -Sy wicd wicd-gtk

HowTo: Remove Every Other Line in Text Files – Linux

Let’s say you’ve got a text file, of any size, big or small, and you want to remove every other line of that file, well here are a few commands in Linux that allow you to do this.

Example, you want to get from this:

1
2
3
4
5
6
7
8
9
10

To this:

1
3
5
7
9

The sed way:

 sed -n "p;N;" file.txt > newfile.txt

The awk way:

 awk 'NR%2 != 0' file.txt > newfile.txt

Here you can actually specify N lines, replace 2 in the above command and you’ll be able to take out every N’th number. As an example, here’s the above replaced with a 3 on the file:

1
2
4
5
7
8
10

Easy as pie, right?

Error: “end_request: I/O error, dev sr0, sector xxxxx” – Linux

Error:

end_request: I/O error, dev sr0, sector 537392

If you’re getting a similar error filling your screen once you’ve installed Ubuntu, don’t panic. It’s pretty common which is basically because Ubuntu (or any other Linux distro) can’t control your CD/DVD drive properly, it’s probably trying to open/close it but doesn’t know if it has or not. The problem is that you don’t get to see what Ubuntu wrote before because it’s filled your screen up with this error.

If you’ve just installed Ubuntu this probably happened when it wanted you to take the disc out and close the cd tray (if there is one) then hit Enter to finish the installation, so just do that and ignore this error.

HowTo: Mount USB Persistent casper-rw File in Linux

So, you’ve created an awesome Live USB Linux stick with a persistence file which let’s you boot anywhere and carry all your sweet sweet datas around on it too. If you want to see those files in Linux on your desktop or laptop outside the USB you’re going to have to mount the loop device (the casper-rw file) somewhere first. The following commands show how to make a folder and mount the loop and then unmount it too.

Just change the /media/USB/ for the mounted location of your mounted USB stick which contains the casper-rw file you want to view the contents of and the /home/alex/caspermnt/ for the mount point on your system.

Mount:

 mkdir ~/caspermnt
sudo mount -o loop /media/USB/casper-rw /home/alex/caspermnt/

Unmount:

 sudo umount ~/caspermnt/

This can be useful for recovering data from a borked Live USB stick or for backing up your files on your computer just to be sure.