Root and Flash Samsung Galaxy S2 From Within OSX

This post outlines the steps I’d taken to root and flash my Galaxy S2 (GT-i9100T) with a custom rom.

I was running the latest SGS2 firmware from Vodafone,AU - DVLS3. I decided to obtain a backup of the modem’s firmware found here. I extracted modem.bin to ~/Desktop

Rooting my GT-i9100T phone was a piece of cake thanks to Framaroot. Essentially, it is a one-click application to install Superuser and su binary on phone.

You can manually download the .apk file to your phone’s storage for installation from within any file manager. It is compatible with many phones, and in particular, Exynos devices (eg Samsung Galaxy S2 GT-i9100T) work with the Aragorn exploit. At the time of this writing, I used version 1.6.0 of Framaroot successfully. Read the FAQ on the linked page for further information.

Optional: Next, I installed BusyBox and DroidWall from within the PlayStore.

Next, I downloaded codeworkx’s ClockworkMod Recovery found here. I extracted its contents (zImage) to my Desktop.

Next, I downloaded my preferred custom rom (Omega Jelly Bean) to the phone’s storage at /sdcard.

Next, I visited this page and downloaded heimdall-suite-1.3.2-mac.dmg — **Heimdall Suite 1.3.2** - OS X binaries (universal). At the time of this writing, version 1.4.0 only works with OSX 10.8+ (Mountain Lion) in 64bit mode - 1.3.2 works fine with other OSX versions, though. After installation of the package, I had to reboot the machine.

Finally, I followed the instructions found here to install CWM-recovery. Essentially I had to do the following:

  • Boot the Galaxy S II into download mode by holding down Volume Down, Home & Power.
  • Insert the USB cable into the device.
  • Run heimdall flash --kernel ~/Desktop/zImage --no-reboot from Terminal.app
  • Also, run heimdall flash --modem ~/modem.bin --no-reboot
  • Turn off the phone.
  • Boot the phone into ClockworkMod Recovery mode by holding Volume Up, Home, & Power.

I then proceeded with the rest of the guide to flash the custom rom.

The end result is shown below:
IMG_20130823_145923

Copy and Paste in Tmux with Mouse

I have my iTerm2 emulate xterm-256colors, and found that it was possible to use the mouse to copy a selection in tmux.

You’d need to hold down the option key whilst left-clicking and dragging across the target text selection. If you want to now paste the selected text back in to the terminal (in say, another window), you must also hold down the option key and middle-click to paste.

Share OSX Clipboard With Emacs

Add the following to your .el init files:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
;; Use M-w to copy Emacs buffer selection; and Cmd-V to paste outside of Emacs.
;; Use Cmd-C to copy selection from OSX; and C-y to paste in Emacs
(defun copy-from-osx ()
(shell-command-to-string "pbpaste"))
(defun paste-to-osx (text &optional push)
(let ((process-connection-type nil))
(let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
(process-send-string proc text)
(process-send-eof proc))))
(setq interprogram-cut-function 'paste-to-osx)
(setq interprogram-paste-function 'copy-from-osx)

Control iTunes with Shell Script at Command-line

Use the following script to control iTunes from the shell:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/sh
#
#######################################
# iTunes Command Line Control v1.0.0.1
# written by David Schlosnagle
# created 2001.11.08
# modified 2007.01.28 by David West
# modified 2013.08.02 by ootput
# filename=itunes
#######################################
showHelp () {
echo "-----------------------------";
echo "iTunes Command Line Interface";
echo "-----------------------------";
echo "Usage: `basename $0` ";
echo;
echo "Options:";
echo " status = Shows iTunes' status, current artist and track.";
echo " play = Start playing iTunes.";
echo " pause = Pause iTunes.";
echo " next = Go to the next track.";
echo " prev = Go to the previous track.";
echo " mute = Mute iTunes' volume.";
echo " unmute = Unmute iTunes' volume.";
echo " vol up = Increase iTunes' volume by 10%";
echo " vol down = Increase iTunes' volume by 10%";
echo " vol # = Set iTunes' volume to # [0-100]";
echo " stop = Stop iTunes.";
echo " search = Run query, populate playlist named foo and play. "
echo " playlist = Show playlists saved in iTunes.";
echo " clear = clear playlist foo. ";
echo " quit = Quit iTunes.";
}
if [ $# = 0 ]; then
showHelp;
fi
while [ $# -gt 0 ]; do
arg=$1;
songname=$2;
echo $songname;
case $arg in
"status" ) state=`osascript -e 'tell application "iTunes" to player state as string'`;
echo "iTunes is currently $state.";
if [ $state = "playing" ]; then
artist=`osascript -e 'tell application "iTunes" to artist of current track as string'`;
track=`osascript -e 'tell application "iTunes" to name of current track as string'`;
echo "Current track $artist: $track";
fi
break ;;
"play" ) echo "Playing iTunes.";
osascript -e 'tell application "iTunes" to play';
break ;;
"pause" ) echo "Pausing iTunes.";
osascript -e 'tell application "iTunes" to pause';
break ;;
"next" ) echo "Going to next track." ;
osascript -e 'tell application "iTunes" to next track';
break ;;
"prev" ) echo "Going to previous track.";
osascript -e 'tell application "iTunes" to previous track';
break ;;
"mute" ) echo "Muting iTunes volume level.";
osascript -e 'tell application "iTunes" to set mute to true';
break ;;
"unmute" ) echo "Unmuting iTunes volume level.";
osascript -e 'tell application "iTunes" to set mute to false';
break ;;
"vol" ) echo "Changing iTunes volume level.";
vol=`osascript -e 'tell application "iTunes" to sound volume as integer'`;
if [ $2 = "up" ]; then
newvol=$(( vol+10 ));
fi
if [ $2 = "down" ]; then
newvol=$(( vol-10 ));
fi
if [ $2 -gt 0 ]; then
newvol=$2;
fi
osascript -e "tell application "iTunes" to set sound volume to $newvol";
break ;;
"stop" ) echo "Stopping iTunes.";
osascript -e 'tell application "iTunes" to stop';
break ;;
"quit" ) echo "Quitting iTunes.";
osascript -e 'tell application "iTunes" to quit';
exit 1 ;;
"search" ) echo "Searching Library.";
songname=$2;
osascript -e "tell application "iTunes"" -e "set searchResults to search playlist "Library" for "$songname"" -e "repeat with aTrack in searchResults" -e "copy aTrack to playlist "foo"" -e "end repeat" -e "play playlist "foo"" -e "end tell";
break ;;
"playlist" )
if [ -n "$2" ]; then
echo "Changing iTunes playlists to '$2'.";
osascript -e 'tell application "iTunes"' -e "set new_playlist to \"$2\" as string" -e "play playlist new_playlist" -e "end tell";
break ;
else
# Show available iTunes playlists.
echo "Playlists:";
osascript -e 'tell application "iTunes"' -e "set allPlaylists to (get name of every playlist)" -e "end tell";
break;
fi
break;;
"clear" ) echo "Clearing Query.";
osascript -e "tell application "iTunes" to delete tracks of playlist "foo"";
break ;;
"help" | * ) echo "help:";
showHelp;
break ;;
esac
done

Embedding IFrames in Wordpress.com

I recently came across a workaround for embedding iframes in Wordpress.com blogs:

Flash and all other embeds are not allowed in WordPress.com posts, pages, or text widgets. For security reasons, we remove the tags needed for these to work. Your intentions may be innocent, but someone somewhere might try to use such embeds to damage the site, affecting all of our users.

As this guide suggests, the workaround made use of a perfectly legitimate and supported shortcode API. In essence, the workaround involved converting an iframe to Flash, which in turn was sourced by [gigya].

I was able to illustrate the concept below:

For my dearest nephew, and any other chess enthusiasts that are perusing this blog, I have embedded a chess game that I recently played. Click the link below, and try to figure out the positional/tactical errors that my opponent (and close friend) committed, and any variations that may have redeemed his play.

1
2
3
<table style="border:none;height:32px;width:32px;">
[gigya src="http://cdn.tagul.com/cloud.swf" flashvars="autoplay=1" allowfullscreen="true" type="application/x-shockwave-flash" allowscriptaccess="always" width="542" height="300" flashvars="id=180853@2"]
</table>

If, for some reason, the embed doesn’t show, here’s a link to how it should look.