You are not logged in.

#1 2006-01-31 22:41:40

jakob
Member
From: Berlin
Registered: 2005-10-27
Posts: 419

Compile additional driver as module...

Hey there!
I have a little problem with my wonderful Rio S35S mp3 player:

Since nobody answered to this first post, please go to the first reply in this thread and read the problem smile

I finally got the cvs-version of rioutil (the program for linux to communicate with the player) compiled with the following PKGBUILD:

#Maintainer hjelmn
#created by hellwoofa
pkgname=rioutil
pkgver=1.5.0br3
pkgrel=1
pkgdesc="Tool to communicate with your Rio mp3 players."
url="http://rioutil.sf.net"
license=""
depends=()
makedepends=()
conflicts=()
replaces=()
backup=()
source=()
md5sums=()

build() {
  cd $startdir/src/
  cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/rioutil login
  cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/rioutil co -P rioutil
  cd $startdir/src/rioutil
  ./autogen.sh --prefix=/usr --without-usbdevfs
  make || return 1
  make DESTDIR=$startdir/pkg install
}

When I use the rio now, i have to do everything as root, but certain things don't work, which may be the fault of the program, still, i think, there needs something to be done (creating udev-rules or something like that)

When I start udevmonitor and connect my rio, I get the following:

UEVENT[1138750389.955443] add@/devices/pci0000:00/0000:00:10.0/usb2/2-2
UDEV  [1138750389.955825] add@/devices/pci0000:00/0000:00:10.0/usb2/2-2
UEVENT[1138750389.956381] add@/devices/pci0000:00/0000:00:10.0/usb2/2-2/2-2:1.0
UEVENT[1138750389.956402] add@/class/usb_device/usbdev2.8
UDEV  [1138750389.956675] add@/devices/pci0000:00/0000:00:10.0/usb2/2-2/2-2:1.0
UDEV  [1138750389.964157] add@/class/usb_device/usbdev2.8

There seems to be no device being given to the mp3 player...

in the README of the pkg, i found:

******************************************************************************
** Instructions if you don't want to use usbdevfs (linux)                   **
** (I'll create a patch one of these days)                                  **
******************************************************************************
% ./configure --without-libusb --without-usbdevfs
% make

(as root)
% cp linux_driver/rio* /usr/src/linux/drivers/usb/
% cd /usr/src/linux/drivers/usb
% mv rios.c rio500.c
% cd /usr/src/linux
(add the rio500 module in configuration)
% make modules
% make modules_install
% insmod rio500

(and if you do not use devfs and the device file does not exist)
% mkdir /dev/usb
% mknod /dev/usb/rio0 c 180 64

Note: I have a self-compiled kernel!
I tried that, but "make modules" gives me

[root@linux-2.6.15.1]# make modules
  CHK     include/linux/version.h
scripts/Makefile.build:15: /usr/src/linux-2.6.15.1/init/Makefile: File or dir not found
make[1]: *** no rule to create »/usr/src/linux-2.6.15.1/init/Makefile« end.
make: *** [init] error 2
[root@linux-2.6.15.1]#

So may be this is the problem, but how can I solve this?
And shouldn't I be able to acces my mp3 player as user, too?

I also created the nod as in the readme but trying to mount -t vfat /dev/usb/rio0 /mnt/usb doesn't work neither....

hm... I hope anyone has a Rio player, too, otherwise i think, you only can help me with the udevrules since this is something absolutely new to me smile

greetings and have a nice sleep smile

.hellwoofa

Offline

#2 2006-02-14 22:42:57

jakob
Member
From: Berlin
Registered: 2005-10-27
Posts: 419

Re: Compile additional driver as module...

Hm... today I was trying to solve the problem again, but it was an afternoon of despair...
Shadowhand helped me but I did not really get it...

All I want to know is: How can I compile these two files, rio500.c and rio_usb.h to an additional module to my kernel?? (it would also be no problem to compile a new kernel, im using ABS for that, i would just need to know what to do)

The way it is described in the readme of the drivers (cp them into /usr/linux-2.6.15-ck4/drivers/usb and "make modules") does not work.

"depmod -ae", like Shadowhand suggested, did not help either...

How can I create a Makefile or tell the system to include these two files to be compiled as a module?

please help me, i'll promise, this will be my last question on the forums for a long time if I only could get my rio working under Linux!

Offline

#3 2006-02-15 00:41:44

tomk
Forum Fellow
From: Ireland
Registered: 2004-07-21
Posts: 9,839

Re: Compile additional driver as module...

I've had a look at the CVS checkout, and a couple of things occur to me. Firstly, the files provided, rios.c and rio_usb.h, are dated nearly a year ago, and the README is from last August. Offhand, I couldn't tell you what the latest kernel version was back then. Secondly, in the 2.6.15 kernel source code, the rio500 files are called rio500.c and rio500_usb.h, and they are in src/linux-<version>/drivers/usb/misc, so you might try copying the CVS files to usb/misc, and mv'ing them to the current files - worth a try, right?

Offline

#4 2006-02-15 06:59:16

jakob
Member
From: Berlin
Registered: 2005-10-27
Posts: 419

Re: Compile additional driver as module...

arg... i never ever thought that these sources would be included in the kernel sources...

i just searched the kernel-config for rio500 (thats what the rios.c is to be renamed to according to the README)

hm... i first had to enable the code maturity options since the driver is in experimental state, so the module is compiling atm and i can't wait for it...

With the thing that the drivers are more than one year old: Sad, but not too many people are using Diamond/Rio mp3-players though i like them very much (started out with the rio300, then 500 and now s35s) 

Thanks a lot for your help!!! smile

Offline

#5 2006-02-15 10:37:02

tomk
Forum Fellow
From: Ireland
Registered: 2004-07-21
Posts: 9,839

Re: Compile additional driver as module...

hellwoofa wrote:

arg... i never ever thought that these sources would be included in the kernel sources...

Well, that's what I figured the dev meant here:

% cp linux_driver/rio* /usr/src/linux/drivers/usb/
% cd /usr/src/linux/drivers/usb
% mv rios.c rio500.c
% cd /usr/src/linux
(add the rio500 module in configuration)
% make modules
% make modules_install

As he admitted, the proper way to do this is to create a kernel patch, instead of mucking around with changing/renaming source files. The other thing to remember is that on an Arch system, /usr/src/linux-<version> provides header files only - he's referring to a complete compiled kernel source tree, which some other distros put under a /usr/src/linux symlink. You have to have the complete source to do make modules.

Offline

#6 2006-02-15 15:11:41

jakob
Member
From: Berlin
Registered: 2005-10-27
Posts: 419

Re: Compile additional driver as module...

i see... i just compiled a new kernel (10 minutes is no time) with the rio drivers... now it works but i'm not sure if it is because of the driver or the --without-usbdevfs-option that I recompile "rioutil" with after it still didn't work...

anyhow: I can upload/format my rio, that's all i want, thank you very much!

Offline

Board footer

Powered by FluxBB