[linux-dvb] [PATCH 1/2] Siano's SMS subsystems API - SmsHost support

BOUWSMA Barry freebeer.bouwsma at gmail.com
Sat Dec 6 12:49:19 CET 2008

On Fri, 5 Dec 2008, Uri Shkolnik wrote:

> > > The first adds the SmsHost API support. This API
> > supports DTV standards yet to be fully supported by the
> > DVB-API (CMMB, T-DMB and more).

> > Is there a particular Linux distribution for which the
> > Siano
> > source code is intended, and, exactly what should I expect
> > to
> > see in /dev when I successfully load the module with my
> > device?

> Siano currently has dozens++ of customers using various flavors 
> of Linux. Desktop systems (multiple distributions), embedded 
> Linux (many types and targets) and some Linux derivative 
> systems.

Okay, thanks.  Now I see that I should not need to rely on
features of a particular distribution...

> Some use Linux DVB v3 API, most don't (either their system are 
> too small, and the kernel and user space are tailored to the 
> specific target/product, or the DTV standards is unsupported by 
> the DVB sub-system (CMMB, T-DMB and more)).

You probably remember this, but just in case anyone else
is at all concerned, my interest for now is in DAB/DAB+
radio reception, for which the v3 API obviously is of no

As far as I know, while the v5 API can include other norms
than DVB/ATSC, such as ISDB, it does not yet have support
for the DMB/DAB family -- and so, I will need to use the
SmsHost and character devices.  At least, until it is
decided whether and how to fit DAB into v5...

(I do not expect that the other part of your patch, which
will provide API v5 support, will resolve this, but I'll
nonetheless wait to see...)

> In order to use the Siano sub-system you need to have C library 
> in user space

Understood.  This is also the part which I am hoping to be
able to avoid, hacking my own userspace tools to accomplish
the minimum that I need to tune a particular DAB ensemble,
and pull the data out and somehow parse it into an mp2 stream.

Of course, I must do this step-by-step.  The easy part was to
apply the diffs; now the next step seems to be for me to get
the device nodes to appear, so that then I can ask about

> Siano is committed to support the LinuxTV community. But to 
> support individual end-users its quite an overstretch...

I appreciate this, especially with the bad experience that I
and several other users and developers have just had with
other products.

And I'm hoping that the Linux community can also work to help
itself, so that you don't need to be bothered by individuals
such as myself, instead supporting competent individuals
such as The Honourable Mr Krufky and anyone else with whom you
have been in developmental contact.  So, I'll pass along to
other readers some of the things I've learned so far, in hopes
that others can benefit from them.

> Anyway, dev node 251 is defined as "experimental/test" node, and 
> is used by Siano for communication between the kernel's 
> sub-system and the user space library and multimedia player 
> (e.g. both control and data paths).

It appears that on my recent `udev'-afflicted system, this 
assigned range of experimental majors 240-254 is dynamically 
allocated from the top down on a first-come, first-served
basis.  Here's what I see in part when I `cat /proc/devices` ...

212 DVB
249 smschar
250 hidraw
251 usb_endpoint
252 usbmon
253 bsg
254 pcmcia

So, in my case, when loading the smsmdtv.ko module that I've
built, I have needed to override the default -- while on my
much older production system, nothing is seen above major 212.

By the way, if it's not obvious to anyone else wanting to
play with this, move any
/lib/modules/`uname -r`/kernel/drivers/media/dvb/siano/sms1xxx.ko
out of the way so that it doesn't get automagically loaded
while you're playing...

However, when reading the patch you provided, I see that I
can also specify this `smschar_major' module parameter as 0;
then a suitable value will be selected (however, apparently
it doesn't get revealed in the `dmesg' output, should I choose
this -- I'll try to offer a debug patch later).

Other useful module parameters are `debug' (debug=3 for me),
and default_mode -- the default being DVB-T BDA operation.

In my case, `default_mode=2' loads the firmware to support
DAB and by extension T-DMB.  Other values, seen in the
siano/smscoreapi.h file, would be =1 for DVB-H, or =3 for
T-DMB/DAB-IP -- how this differs from mode 2 I don't know,
and I don't know which is the better choice for me yet.
The default is =4; ISDB-T is likely to be =6 (BDA driver);
and CMMB is =7.  For those too lazy to look at the source.

There may be special attention needed to providing the
firmware in the right place -- it ``just works'' for me
so I've managed to get that right a long time ago.
That is, I see `dmesg' output like
smsusb1_detectmode: 2 "SMS TDMB Receiver"
and I am momentarily at peace with the world.

So I see that smschar_register() succeeds and the major
number is assigned appropriately.  Additionally,
smschar_setup_cdev() succeeds for the seven devices.
At the moment for me, I don't get anything appearing
anywhere in /dev with the proper major number, or for
that matter, in /sys/dev/char or anywhere else in sysfs
that I've seen.

I'm comparing the dvb-core source before I hack blindly,
but if I may ask another stupid question, would creating
the device at the appropriate major number also be handled
by the C library to which you have referred, or perhaps
by a user application to handle tuning?  And, also,
I suspect that as the source you posted allows me to
handle the case where dev major 251 is already in use,
as well as choosing a non-default minor, the userspace
library will also handle this.

It's obvious that I'm not a device driver author, and I
don't expect you to help with these simple questions that
are purely Linux-related -- I've a google and I know how
to use it!  It just takes time...

> "Sir Mkrufky" ? I like that... I'll ask Mike if I'm too have the 
> privilege to refer him with that title....

I have heard it said that sweets work well to attract,
well, something.  So I prefer to address people the way
I don't deserve to be treated.  If nothing else, it's
usually good to reduce the recipient to giggling helplessly.

On the other hand, I've experimented and set out a lump
of sugar, along with some rotten month-old cheese, some
apple vinegar, decaying liquefying vegetables, and the
like, and strangely, all the bugs and flies were not
drawn to the lump of sweetness.  Draw your own conclusion,
but, well, my dinner is waiting...

Anyway, Sir Shkolnik (I'm sorry, may I call you Sir?),
thank you for your help, and I'll go back to hacking on
the source to see what I can make appear...

barry bouwsma

More information about the linux-dvb mailing list