Motorola Defy+ : back from CyanogenMod 11 (unofficial) to stock ROM

Why

I am currently not satifsfied with the stability of the unofficial CyanogenMod 11 port on this device (but anyway, props to the developers who are doing a very hard job to improve this!)

So I decided to have a look back at the Android 2.3.6 stock rom which was rather stable (but not flawlessly stable…)

I could have had a try at CyanogenMod 7.2, maybe later.

Update May 2015 : running CyanogenMod 7.2 for a few months on this device : this is simply the best *STABLE* custom rom (Did not experience a single system crash or reboot yet, unlike Motorola’s stock rom!).
Download link here : https://download.cyanogenmod.org/?device=jordan_plus

Currently, I only use this device without SIM card, but mainly :

– wifi only
– offline GPS with OsmAnd~ from F-Droid repos
– picture/video taking (with gps tagging)
– (voice) note taking
etc…

So I like my device not to randomly reboot and loose everything when I’m hiking/driving/etc…

How

Disclaimer : USE AT YOUR OWN RISK!

Needed :

RSD Lite (for windows)
http://www.andromods.com/download-files/install-rsd-lite-latest-version-flashing-tool-motorola.html

USB drivers for windows
http://singledrivers.blogspot.fr/2014/01/motorola-defy-usb-driver-for-windows_17.html

Finally you can find stock roms here
http://sbf.droid-developers.org/phone.php?device=28
(be sure to select the right one for your device)

How to flash stock rom (youtube video)

Flash to stock went OK? But likely your device (if you had a custom ROM previouisly installed) will boot loop.

If this is the case, pull out the battery, put it back, power on the phone with VOL- pressed (go to recovery).
On the next screen, showing the Android logo with an exclamation, press both VOL+ and VOL-
The recovery menu entries should appear.
Select “Wipe to factory”. Once done, reboot device. Should be ok!

Now root your device
http://forum.xda-developers.com/wiki/Motorola_Defy#How_to_root_your_DEFY.2FDEFY.2B_with_Framaroot

Install F-droid
https://f-droid.org/FDroid.apk

Enable Archive repository in F-Droid, so that some older apps will be available for our good old Gingerbread 2.3.6 system.

Install some apps :

– AdAway
– OsmAnd~
– OsmTracker
– Barcode Scanner
– Ghost Commander (so that when rooted, you’ll be able to delete pre-installed crappy vendor apps)
– etc..

Bugs :

– GPS does not work?

Even without SIM card, even in PLANE mode, be sure to enable DATA synchronization. Then the GPS will fix!
(connect to a WIFI access point if it still doesn’t fix)

– OsmAnd~ 1.8.3 : app crashed when changing device orientation
Quick fix : lock screen orientation to landscape or portrait, in OsmAnd settings

Other useful links

The XDA Wiki page is very complete
http://forum.xda-developers.com/wiki/Motorola_Defy

XDA forums for Defy
http://forum.xda-developers.com/motorola-defy

Transferring files between an Android device and a Linux system via USB cable

debian_android_logo

Some newer Android devices do not offer regular USB-drive like connection. Instead they use the MTP protocol.

In order to easily transfer files between your Android device and your favorite Linux distro (yes, Debian!) with a USB cable, via MTP transfer protocol :
As root

apt-get install jmtpfs

Make sure your regular user belongs to the “fuse” group

usermod -a -G fuse username

(you need to logout and login again)

Connect your Android device to your computer with your USB cable, then as a regular user :

mkdir -p ~/Android_transfer
jmtpfs Android_transfer/

After a few seconds, files on the Android device should appear in the mount point 🙂

To properly unmount :

fusermount -u ~/Android_transfer

For more info, as always :

man jmtpfs
jmtpfs -h

Mageia 4 Xen Server

mageia logo

A quick guide for a working Xen hypervisor (Dom0) on a Mageia 4 host.

Minimal installation for a server

Fetch a network install iso (64 bit!)

http://www.mageia.org/en/downloads/

I chose a Text installer, but do a graphical install if you prefer. We are doing a minimal install.

  • Install from HTTP (choose your favorite mirror)
  • Desktop : custom
  • uncheck everything
  • next screen (“Type of install”), use default choices
  • bootloader : I prefer GRUB2

Installation finished, reboot, login as root.

Continue reading

xorg.conf snippet for Samsung SyncMaster 2253LW monitor

xorg.conf snippet for a Samsung SyncMaster 2253LW monitor.

Full specs here : http://downloadcenter.samsung.com/content/UM/200801/20080105125513265_BN59-00671A-Eng.pdf

Section "Monitor"
        Identifier "Monitor0"
        VendorName "Samsung"
        ModelName "SyncMaster 2253LW"
        Option  "DPMS"
        HorizSync       30-81
        VertRefresh     56-75

  # 1680x1050 @ 60.00 Hz (GTF) hsync: 65.22 kHz; pclk: 147.14 MHz
  Modeline "1680x1050_60.00"  147.14  1680 1784 1968 2256  1050 1051 1054 1087  -HSync +Vsync

  # 1280x1024 @ 60.00 Hz (GTF) hsync: 63.60 kHz; pclk: 108.88 MHz
  Modeline "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync +Vsync
EndSection

Section "Screen"
        Identifier "Screen0"
        Device  "Card0"
        Monitor "Monitor0"
        DefaultDepth    24
        Subsection      "Display"
                ViewPort        0 0
                Depth   24
                Modes   "1680x1050_60.00" "1280x1024_60.00" "1024x768"
        EndSubSection
EndSection

Wifi repeater/range extender script

Updated September 17, 2014 : updated, improved and should be working! (Use at your own risk!). Thanks to AL for pointing errors!

#!/bin/bash
#
# Wireless Repeater/Range extender script
#
# Last changes:
#   - 20/Apr/2014 : added ad filtering (uses an additional hosts file)
#   - 12/Apr/2013 : adapted for Debian (tested under 7.0 Wheezy)
#
# https://agentoss.wordpress.com
#
# thanks to : http://www.aerospacesoftware.com/howtos/Laptop-NAT-Howto.html (link dead now)
#
# hardware requirements : 2 wireless NICs
# software requirements : iptables, wpa_supplicant, hostapd, dnsmasq, dhcpcd (or dhclient)
#
# This is a standalone script, it will not use your existing configuration files
# (wpa_supplicant/hostapd)
#
# Both wireless interfaces will use WPA/WPA2 encryption.
#
# BEFORE STARTING THIS SCRIPT :
# - you must have root rights
# - stop your wireless connection manager (networkmanager, wicd, etc...)
# - disable your firewall
# - disable power management (prevent the computer to go into suspend mode when unused)
#
# This script has been tested on OpenSUSE 12.2, Debian 7.0
# but should work on other Linux systems with minor adaptations.
#
# USE AT YOUR OWN RISK!
#
# TODO : repeater with 1 wireless NIC + 1 ethernet NIC

# this is the wireless interface we use to connect to our existing Access Point
WLAN_STA="wlan0"

# enter here your existing SSID and WPA passphrase
WLAN_STA_SSID="YOUR_EXISTING_SSID"
WLAN_STA_PASSPHRASE="your$existing$passphrase"

# this is the wireless interface we use to create our new AP (the "repeater" AP)
WLAN_AP="wlan1"

# your new AP's SSID (change the name eventually)
WLAN_AP_SSID="REPEAT_$WLAN_STA_SSID"
# Be sure to use different channels for the 2 AP's for best performance
WLAN_AP_CHANNEL=3
WLAN_AP_IP="192.168.9.1"
WLAN_AP_DHCP_RANGE="192.168.9.10,192.168.9.20"
# we can use the same passphrase (or not)
WLAN_AP_PASSPHRASE=$WLAN_STA_PASSPHRASE

# temp files (will contain passphrases in clear text, so make sure they are not world readable)
HOSTAP_TEMP_CONF="/root/hostap_temp.conf"
WPASUPPLICANT_TEMP_CONF="/root/wpasupplicant_temp.conf"

# URL and filename to download for the ad filter hosts file
# Thanks to winhelp2002.mvps.org
# just comment the two variables if you don't want to use ad filtering
HOSTS_FILE="hosts.zip"
HOSTS_URL="http://winhelp2002.mvps.org/$HOSTS_FILE"

# log file for dnsmasq
DNSMASQ_LOG="/root/dnsmasq.log"

# Path for used commands (adapt to your system)
#DHCPCD="/sbin/dhcpcd"
#for Debian we use dhclient (installed by default)
DHCPCD=$(which dhclient)
HOSTAPD=$(which hostapd)
WPASUPPLICANT=$(which wpa_supplicant)
DNSMASQ=$(which dnsmasq)
IPTABLES=$(which iptables)

PIDFILE="/var/run/repeater.pid"
IPTABLES_SAVE_FILE="/root/iptables.save"

USAGE="Usage : `basename $0` \
\n\nWireless repeater/extender script."

MSG_STOP="Repeater has been stopped."

# sub-routines
show_notification()
{
 xmessage -center -timeout $2 "$1"
}

# Main program
if [[ "$#" -ne 1 || "$1" == "help" ]]; then
 # show program help
 echo -e "$USAGE"
 exit 0
fi

# check if we are root
if [ $EUID -ne 0 ]; then
   echo `basename $0` ": this script must be run as root!" 1>&2
   exit 1
fi
# check for software we need
if [ ! -x $DHCPCD ]; then
 echo "FATAL: $DHCPCD not found!"; exit 1
fi
if [ ! -x $HOSTAPD ]; then
 echo "FATAL: $HOSTAPD not found!"; exit 1
fi
if [ ! -x $WPASUPPLICANT ]; then
 echo "FATAL: $WPASUPPLICANT not found!"; exit 1
fi
if [ ! -x $DNSMASQ ]; then
 echo "FATAL: $DNSMASQ not found!"; exit 1
fi
if [ ! -x $IPTABLES ]; then
 echo "FATAL: $IPTABLES not found!"; exit 1
fi
# check for wireless interfaces
ifconfig $WLAN_STA 1>&2>/dev/null
if [[ $? -ne 0 ]]; then
 echo "FATAL: Wireless interface $WLAN_STA unavailable!"; exit 1
fi
ifconfig $WLAN_AP 1>&2>/dev/null
if [[ $? -ne 0 ]]; then
 echo "FATAL: Wireless interface $WLAN_AP unavailable!"; exit 1
fi


# stop the repeater?
if [ "$1" == "stop" ]; then
 # be sure the repeater is already running
 if [ -f "$PIDFILE" ]; then
 # kill existing wireless connections from previous execution of this script
 echo -n -e "Stopping... "
 $DHCPCD -x $WLAN_STA 2>/dev/null
 $DHCPCD -x $WLAN_AP 2>/dev/null
 killall wpa_supplicant 2>/dev/null

 # kill running hostapd daemon if it exists
 killall hostapd 2>/dev/null

 # kill dnsmasq dhcp
 killall dnsmasq 2>/dev/null

 # empty existing temp.conf files, for security
 >$HOSTAP_TEMP_CONF
 >$WPASUPPLICANT_TEMP_CONF

 echo "OK"

 # restore firewall rules
 echo -n -e "Restoring firewall... "
 iptables-restore /dev/null
service wicd stop 2>/dev/null

# create temp wpa_supplicant.conf file for our STA interface
cat >$WPASUPPLICANT_TEMP_CONF <$HOSTAP_TEMP_CONF <"$IPTABLES_SAVE_FILE" && echo "OK"

# enable packet forwarding and add firewall rules to allow forwarding packets
# between our 2 network interfaces.
IF_IN=$WLAN_STA
IF_OUT=$WLAN_AP

sysctl -w net.ipv4.ip_forward=1
$IPTABLES -F
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $IF_IN -j MASQUERADE
$IPTABLES -A FORWARD -i $IF_IN -o $IF_OUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -i $IF_OUT -o $IF_IN -j ACCEPT

# create pid file
echo $$ >"$PIDFILE"

echo -e "\nWireless repeater access point \"$WLAN_AP_SSID\" is *up* and running!\n"
echo -e "To stop it : `basename $0` stop"
show_notification "Wireless repeater access point \"$WLAN_AP_SSID\" is *up* and running!" 3

# optional : open a new xterm which displays the DNS log in realtime
xterm -e "tail -f $DNSMASQ_LOG" &

exit 0
fi

# unknown command, show usage
echo -e "$USAGE"
exit 1

Debian 6.0 (Squeeze) on the Xplore iX104C3 rugged Tablet PC

productid-1444-sku-IX104C3

System specs

A nice review here : http://www.ruggedpcreview.com/3_slates_xplore_ix104c3.html

Users handbook : ftp://Support:Xplore@ftp.xploretech.com/Reports%20and%20Handbooks/iX104C3%20USERS%20HANDBOOK.pdf

Note: my model only has a digitizer (tablet PC model), no touchscreen (dual mode version)

Debian stable to the rescue

First I wanted to install Arch Linux on this system, but soon I encountered a severe setback : the Wacom stylus would not work. Then I tried Ubuntu 12.04 (Precise), everything worked out of the box, except the stylus!
Explanation : it seems the support for this older, serial Wacom tablet has been removed from the X.Org Wacom input drivers, since the 0.10.6 version and up.
(more info can be found here : http://ubuntuforums.org/showthread.php?t=1780154 )

Fortunately Debian Squeeze still uses a working 0.10.5 driver version!

Continue reading

Home mail server with Postfix + Dovecot (IMAP) + Squirrelmail/Roundcube on NetBSD 6.0.1

NetBSD-smaller-tb

NetBSD 6.0.1

Goals

  • lightweight (no mysql server, no antivirus)
  • simple (no virtual domains/users)
  • secure

Requirements

  • a valid internet domain name if you want to be able to send/receive email to/from the internet (buy a domain or take a free one at http://freedns.afraid.org )
  • valid DNS records for your domain
  • we assume your mail server is behind a properly configured router/gateway/firewall

Hardware/Virtual machine requirements

  • 512M RAM
  • 3G of disk space minimum, 8G recommended

Continue reading

Wireless Ad-hoc server script

Today, a quick and dirty Bash script which will allow you, for instance, to quickly serve files from your laptop to other wireless devices (Warning here, we use WEP encryption which is not secure).


#!/bin/bash
#
# Wireless Ad-hoc script
#
# https://agentoss.wordpress.com / fredo696@gmail.com
#
# This script will setup your wireless adapter in Ad-Hoc mode
# and start a DHCP server so that other peers (eg. an Android device)
# can receive an IP address and connect to your computer.
#
# After that, you can start a minimal webserver (darkhttpd for example)
# so that you can quickly share some files with minimal effort!
#
# This script must be run as root.
# Tested on Arch Linux.
# Some adaptations may be needed for other Linux systems.
#
# Requirements: iw, ifconfig commands, and dnsmasq.
#
# WARNING : WEP encryption is weak security :)

# User variables
mywlan="wlan0"
myessid="fredo"
mychan="4"
mywepkey="dead-beef-00"
myip="192.168.7.100"
mydhcprange="192.168.7.101,192.168.7.110"

# Main program
echo -n "Stopping wireless connections (if any)... "
# adapt to your system; I use wicd
systemctl stop wicd && echo "OK"
# for networkmanager
#systemctl stop NetworkManager

echo -n "Starting wireless Ad-hoc mode... "
ifconfig $mywlan down || exit 1
iwconfig $mywlan mode ad-hoc || exit 1
iwconfig $mywlan essid $myessid
iwconfig $mywlan channel $mychan
[ "$mywepkey" ] && iwconfig $mywlan key $mywepkey

ifconfig $mywlan $myip
ifconfig $mywlan up && echo "OK"
echo -n "Starting DHCP server ... "
dnsmasq --dhcp-range="$mydhcprange" && echo "OK"

echo "--------------------------------------"
echo "ESSID : $myessid"
[ "$mywepkey" ] && echo "WEP KEY : $mywepkey"
echo "This computer's IP : $myip"
echo "--------------------------------------"

# debug
#iwconfig $mywlan

while true; do
echo -n "Enter 'q' to quit. "
read value
if [ "$value" == "q" ]; then
break
fi
done

echo -n "Killing DHCP server... "
killall dnsmasq && echo "OK"
echo -n "Killing wireless... "
# restoring the wlan interface to "default" mode
ifconfig $mywlan down
iwconfig $mywlan mode managed
iwconfig $mywlan essid off
iwconfig $mywlan key off
echo "OK"
echo "Wireless Ad-hoc mode terminated."
# now you can restart your network manager

exit 0