I recently got a USB OTG cable for my mobile phone and I wanted to use my PL2303 USB to UART convertor with it. It is great for the embedded system projects I'm working on. You can follow the below procedure to do it yourself.
Phone kernel : Linux 184.108.40.206-Kappa1.6
PC O/S : Ubuntu 13.04 32bit
1) Check for your kernel info using "uname -a" on either terminal emulator or ADB (use "adb shell" and run it).
My result: Linux version 220.127.116.11-Kappa1.6 (Ka@Kappa) (gcc version 4.7.3 20130102 (prerelease) (Linaro GCC 4.7-2013.01) ) #94 PREEMPT Sun Apr 28 23:46:13 CEST 2013
2) Get the appropriate kernel source for your kernel. I got 18.104.22.168-Kappa1.6 kernel source from a GIT host using, (If you don't have git installed, you can install it by sudo apt-get install git)
git clone https://github.com/KaSt/Kappa.git
3) Download the appropriate cross-compiler toolchain, I'm using Linaro GCC 4.7-2013.01 toolchain.
4) Extract toolchain to somewhere, I extracted it to, /home/buddika/linaro
5) Set path variable to the bin directory of the toolchain using,
6) Copy the kernel configuration file to the main folder where kernel source it. I executed following command at there,
cp /home/buddika/kernel/Kappa/arch/arm/configs/ka_coconut_defconfig .config
7) Check MakeFile and config files and edit them to match the kernel magic version(in my case 22.214.171.124-Kappa1.6). I had to edit following line on config file,
CONFIG_LOCALVERSION="$(KERNEL_LOCAL_VERSION)-Kappa $(KAREL)" to
8) Check the toolchain's binary directory and find the prefix for the compiler, if you see file like arm-linux-gnueabihf-gcc , the prefix is "arm-linux-gnueabihf-". Note this down for steps below.
9) Go to the kernel source directory, Let's clean the old binary files which may be there.
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make clean
10) Let's run menuconfig to configure the kernel options. This will give you a GUI where you can enable features. Select features you need as modules (in my case usbserial...etc) and press M to build them as modules.
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make menuconfig
11) Finally build the selected features as kernel modules. :)
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make modules
Now you can find the compiled kernel modules at "drivers/usb/serial/" folder in the kernel source folder. If you enabled other functions please check the appropriate folder.
I will show you how to use these newly compiled modules on your phone to use USB to UART module in the next post :D
Compiling kernel modules for an Android phone
10:31 PM ADB , Android , CP2102 , kernel , linaro , Linux , modules , PL2303 , toolchain , UART , USB Edit-