Building Gadget USB Module

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(Ubuntu Feisty 7.0.4)
(rewritten in a way that does not involve breaking the package management)
Line 4: Line 4:
 
This procedure works on Debian GNU/Linux as well.
 
This procedure works on Debian GNU/Linux as well.
  
== Ubuntu Feisty 7.0.4 ==
+
== Debian GNU/Linux and Ubuntu Feisty 7.0.4 ==
 
To prepare your environment run the following:
 
To prepare your environment run the following:
 
  sudo apt-get install linux-source linux-headers-`uname -r`
 
  sudo apt-get install linux-source linux-headers-`uname -r`
 +
 +
Create and enter working dir (e.g. ~/gadgetfs)
 +
mkdir $WD
 +
cd $WD
  
 
Uncompress /usr/src/linux-source-2.6.##.tar.gz (or .bz2)
 
Uncompress /usr/src/linux-source-2.6.##.tar.gz (or .bz2)
  cd /usr/src/
+
  tar xf /usr/src/linux-source-2.6.##.tar.gz
sudo tar -xvf /usr/src/linux-source-2.6.##.tar.gz
+
  
link it to /usr/src/linux
+
Then run the following:
sudo ln -s /usr/src/linux-source-2.6.## /usr/src/linux
+
 
+
ensure /lib/modules/`uname -r`/build exists,
+
ls /lib/modules/`uname -r`/build
+
 
+
then run the following:
+
 
  mkdir usb_module_dir
 
  mkdir usb_module_dir
 
  cd usb_module_dir
 
  cd usb_module_dir
  cp -r /usr/src/linux/drivers/usb/* .
+
  cp -r /usr/src/linux-source-2.6.##/drivers/usb/* .
 
  cd gadget
 
  cd gadget
 
  echo "KDIR := /lib/modules/`uname -r`/build" >> Makefile
 
  echo "KDIR := /lib/modules/`uname -r`/build" >> Makefile
Line 30: Line 27:
 
  make
 
  make
  
Once the kernel modules ( dummy_hcd.ko and gadgetfs.ko ) are built, you must remove (or move) the gadgetfs and net2280 as follows:
+
If everything went fine you will find ''dummy_hcd.ko'' and ''gadgetfs.o'' along with other files in the current directory. Load the modules whenever you need them by issuing
sudo mv /lib/modules/`uname -r`/kernel/drivers/usb/gadget/net2280.ko ./original_net2280.ko
+
  sudo insmod ./dummcy_hcd.ko
  sudo mv /lib/modules/`uname -r`/kernel/drivers/usb/gadget/gadget.ko ./original_gadgetfs.ko
+
  sudo insmod ./gadgetfs.ko
 
+
and replace them with the new modules:
+
  sudo cp dummy_hcd.ko /lib/modules/`uname -r`/kernel/drivers/usb/gadget/
+
sudo cp gadgetfs.ko /lib/modules/`uname -r`/kernel/drivers/usb/gadget/
+
sudo depmod
+
 
+
The net2280 module provides conflicting symbols and causes interference with the dummy_hcd module.
+
  
 
[[Category:Categories]]
 
[[Category:Categories]]
 
[[Category:Guides]]
 
[[Category:Guides]]

Revision as of 15:41, 30 July 2007

General Comments

You will most likely need kernel version 2.6.20 or higher

This procedure works on Debian GNU/Linux as well.

Debian GNU/Linux and Ubuntu Feisty 7.0.4

To prepare your environment run the following:

sudo apt-get install linux-source linux-headers-`uname -r`

Create and enter working dir (e.g. ~/gadgetfs)

mkdir $WD
cd $WD

Uncompress /usr/src/linux-source-2.6.##.tar.gz (or .bz2)

tar xf /usr/src/linux-source-2.6.##.tar.gz

Then run the following:

mkdir usb_module_dir
cd usb_module_dir
cp -r /usr/src/linux-source-2.6.##/drivers/usb/* .
cd gadget
echo "KDIR := /lib/modules/`uname -r`/build" >> Makefile
echo "PWD := `pwd`" >> Makefile
echo "obj-m := dummy_hcd.o gadgetfs.o" >> Makefile
echo "default: " >> Makefile
echo -e "\t\$(MAKE) -C \$(KDIR) SUBDIRS=\$(PWD) modules" >> Makefile
make

If everything went fine you will find dummy_hcd.ko and gadgetfs.o along with other files in the current directory. Load the modules whenever you need them by issuing

sudo insmod ./dummcy_hcd.ko
sudo insmod ./gadgetfs.ko
Personal tools

General Comments

You will most likely need kernel version 2.6.20 or higher

This procedure works on Debian GNU/Linux as well.

Ubuntu Feisty 7.0.4

To prepare your environment run the following:

sudo apt-get install linux-source linux-headers-`uname -r`

Uncompress /usr/src/linux-source-2.6.##.tar.gz (or .bz2)

cd /usr/src/

sudo tar -xvf /usr/src/linux-source-2.6.##.tar.gz

link it to /usr/src/linux

sudo ln -s /usr/src/linux-source-2.6.## /usr/src/linux

ensure /lib/modules/`uname -r`/build exists,

ls /lib/modules/`uname -r`/build

then run the following:

mkdir usb_module_dir
cd usb_module_dir
cp -r /usr/src/linux/drivers/usb/* .
cd gadget
echo "KDIR := /lib/modules/`uname -r`/build" >> Makefile
echo "PWD := `pwd`" >> Makefile
echo "obj-m := dummy_hcd.o gadgetfs.o" >> Makefile
echo "default: " >> Makefile
echo -e "\t\$(MAKE) -C \$(KDIR) SUBDIRS=\$(PWD) modules" >> Makefile
make

Once the kernel modules ( dummy_hcd.ko and gadgetfs.ko ) are built, you must remove (or move) the gadgetfs and net2280 as follows:

sudo mv /lib/modules/`uname -r`/kernel/drivers/usb/gadget/net2280.ko ./original_net2280.ko
sudo mv /lib/modules/`uname -r`/kernel/drivers/usb/gadget/gadget.ko ./original_gadgetfs.ko

and replace them with the new modules:

sudo cp dummy_hcd.ko /lib/modules/`uname -r`/kernel/drivers/usb/gadget/
sudo cp gadgetfs.ko /lib/modules/`uname -r`/kernel/drivers/usb/gadget/
sudo depmod

The net2280 module provides conflicting symbols and causes interference with the dummy_hcd module.