[linux-dvb] Re: Problems with the Mantis driver

Manu Abraham abraham.manu at gmail.com
Sun Oct 15 18:07:27 CEST 2006


Bernhard Rosenkraenzer wrote:
> Hi,
> I've just tried the Mantis driver on a Twinhan DVB-S card (PCI ID 1822:4e35 
> subsystem 1822:0014)
> 
> The card is detected correctly:
> Mantis Rev 1, irq: 19, latency: 64
>  memory: 0xfdfff000, mmio: 0xdca7e000
> get_mac_address (1): MAC Address=[00:08:ca:19:9e:2d]
> get_subvendor_id (1): Sub Vendor ID=[0x1822]
> get_subdevice_id (1): Sub Device ID=[0x0014]
> mantis_alloc_buffers (1): DMA=0x12520000 cpu=0xd2520000 size=65536
> mantis_alloc_buffers (1): RISC=0x124fb000 cpu=0xd24fb000 size=1000
> DVB: registering new adapter (Mantis dvb adapter).
> mantis_frontend_init (1): Probing for MB86A16 (DVB-S/DSS)
> mantis_frontend_init (1): found MB86A16 DVB-S/DSS frontend @0x08
> DVB: registering frontend 0 (Fujitsu MB86A16 DVB-S)...
> 
> But trying to actually use it fails. strace-ing mplayer shows:
> 
> open("/dev/dvb/adapter0/frontend0", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 3
> open("/dev/dvb/adapter0/demux0", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 4
> open("/dev/dvb/adapter0/demux0", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 5
> open("/dev/dvb/adapter0/demux0", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 6
> open("/dev/dvb/adapter0/dvr0", O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 7
> write(1, "dvb_tune Freq: 12188000\n", 24dvb_tune Freq: 12188000
> ) = 24
> ioctl(3, FE_GET_INFO, { name="Fujitsu MB86A16 DVB-S", type=FE_QPSK, 
> frequency_min=950000, frequency_max=2150000, frequency_stepsize=125, 
> frequency_tolerance=0, symbol_rate_min=1000000, symbol_rate_max=45000000, 
> symbol_rate_tolerance=500, caps=FE_CAN_INVERSION_AUTO|FE_CAN_FEC_1_2|
> FE_CAN_FEC_2_3|FE_CAN_FEC_3_4|FE_CAN_FEC_5_6|FE_CAN_FEC_7_8|FE_CAN_FEC_AUTO|
> FE_CAN_QPSK }) = 0
> ioctl(3, FE_SET_TONE, 0x1)              = 0
> ioctl(3, FE_SET_VOLTAGE, 0x1)           = 0
> nanosleep({0, 15000000}, NULL)          = 0
> ioctl(3, FE_DISEQC_SEND_MASTER_CMD, 0xbfa09030) = 0
> nanosleep({0, 0}, NULL)                 = 0
> nanosleep({0, 15000000}, NULL)          = 0
> ioctl(3, FE_DISEQC_SEND_BURST, 0)       = 0
> nanosleep({0, 15000000}, NULL)          = 0
> ioctl(3, FE_SET_TONE, 0)                = 0
> nanosleep({0, 100000000}, NULL)         = 0
> ioctl(3, FE_SET_FRONTEND, { frequency=1588000, inversion=2, symbol 
> rate=27500000, fec_inner: 9}) = 0
> time(NULL)                              = 1160916477
> poll([{fd=3, events=POLLPRI, revents=POLLPRI}], 1, 30000) = 1
> ioctl(3, FE_READ_STATUS, 0)             = 0 [<------ This call takes a very 
> long time]
> nanosleep({0, 10000000}, NULL)          = 0
> time(NULL)                              = 1160916494
> poll([{fd=3, events=POLLPRI, revents=POLLPRI}], 1, 30000) = 1
> ioctl(3, FE_READ_STATUS, 0)             = 0
> 
> 
> Looks like the lock status is not being returned correctly.
> 
> dmesg shows:
> mb86a16_write: writing to [0x08],Reg[0x20],Data[0x04]
> mb86a16_write: writing to [0x08],Reg[0x16],Data[0x80]
> mb86a16_write: writing to [0x08],Reg[0x1e],Data[0x00]
> vp1034_set_voltage (1): Polarization=[18V]
> mb86a16_write: writing to [0x08],Reg[0x16],Data[0x80]
> mb86a16_write: writing to [0x08],Reg[0x1e],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x20],Data[0x04]
> mb86a16_write: writing to [0x08],Reg[0x18],Data[0xe0]
> mb86a16_write: writing to [0x08],Reg[0x19],Data[0x10]
> mb86a16_write: writing to [0x08],Reg[0x1a],Data[0x38]
> mb86a16_write: writing to [0x08],Reg[0x1b],Data[0xf3]
> mb86a16_write: writing to [0x08],Reg[0x16],Data[0x94]
> mb86a16_write: writing to [0x08],Reg[0x1e],Data[0x01]
> mb86a16_write: writing to [0x08],Reg[0x16],Data[0x98]
> mb86a16_write: writing to [0x08],Reg[0x1e],Data[0x01]
> mb86a16_write: writing to [0x08],Reg[0x20],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x16],Data[0xa0]
> mb86a16_write: writing to [0x08],Reg[0x1e],Data[0x01]
> mb86a16_set_fe: freq=1588 Mhz, symbrt=27500 Ksps
> mb86a16_write: writing to [0x08],Reg[0x32],Data[0x02]
> mb86a16_write: writing to [0x08],Reg[0x06],Data[0xdf]
> mb86a16_write: writing to [0x08],Reg[0x0a],Data[0x3d]
> mb86a16_write: writing to [0x08],Reg[0x2b],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x2c],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x58],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x59],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x08],Data[0x16]
> mb86a16_write: writing to [0x08],Reg[0x2f],Data[0x21]
> mb86a16_write: writing to [0x08],Reg[0x39],Data[0x38]
> mb86a16_write: writing to [0x08],Reg[0x3d],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x3e],Data[0x1c]
> mb86a16_write: writing to [0x08],Reg[0x3f],Data[0x20]
> mb86a16_write: writing to [0x08],Reg[0x40],Data[0x1e]
> mb86a16_write: writing to [0x08],Reg[0x41],Data[0x23]
> mb86a16_write: writing to [0x08],Reg[0x54],Data[0xff]
> mb86a16_write: writing to [0x08],Reg[0x00],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x2d],Data[0x1a]
> mb86a16_write: writing to [0x08],Reg[0x49],Data[0x7a]
> mb86a16_write: writing to [0x08],Reg[0x2a],Data[0x32]
> mb86a16_write: writing to [0x08],Reg[0x36],Data[0x06]
> mb86a16_write: writing to [0x08],Reg[0x33],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x03],Data[0x02]
> mb86a16_write: writing to [0x08],Reg[0x04],Data[0x4e]
> mb86a16_write: writing to [0x08],Reg[0x05],Data[0x03]
> mb86a16_write: writing to [0x08],Reg[0x21],Data[0x13]
> mb86a16_write: writing to [0x08],Reg[0x22],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x23],Data[0x31]
> mb86a16_write: writing to [0x08],Reg[0x24],Data[0xa5]
> mb86a16_write: writing to [0x08],Reg[0x25],Data[0x01]
> mb86a16_write: writing to [0x08],Reg[0x2b],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x2c],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x0c],Data[0x04]
> mb86a16_write: writing to [0x08],Reg[0x21],Data[0x13]
> mb86a16_write: writing to [0x08],Reg[0x22],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x23],Data[0x31]
> mb86a16_write: writing to [0x08],Reg[0x24],Data[0xd5]
> mb86a16_write: writing to [0x08],Reg[0x25],Data[0x01]
> mb86a16_write: writing to [0x08],Reg[0x2b],Data[0x74]
> mb86a16_write: writing to [0x08],Reg[0x2c],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x0c],Data[0x04]
> mb86a16_write: writing to [0x08],Reg[0x21],Data[0x13]
> mb86a16_write: writing to [0x08],Reg[0x22],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x23],Data[0x31]
> mb86a16_write: writing to [0x08],Reg[0x24],Data[0x75]
> mb86a16_write: writing to [0x08],Reg[0x25],Data[0x01]
> mb86a16_write: writing to [0x08],Reg[0x2b],Data[0x8c]
> mb86a16_write: writing to [0x08],Reg[0x2c],Data[0x0f]
> mb86a16_write: writing to [0x08],Reg[0x0c],Data[0x04]
> mb86a16_write: writing to [0x08],Reg[0x21],Data[0x13]
> mb86a16_write: writing to [0x08],Reg[0x22],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x23],Data[0x32]
> mb86a16_write: writing to [0x08],Reg[0x24],Data[0x15]
> mb86a16_write: writing to [0x08],Reg[0x25],Data[0x01]
> mb86a16_write: writing to [0x08],Reg[0x2b],Data[0xdf]
> mb86a16_write: writing to [0x08],Reg[0x2c],Data[0x0f]
> mb86a16_write: writing to [0x08],Reg[0x0c],Data[0x04]
> mb86a16_write: writing to [0x08],Reg[0x21],Data[0x13]
> mb86a16_write: writing to [0x08],Reg[0x22],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x23],Data[0x31]
> mb86a16_write: writing to [0x08],Reg[0x24],Data[0x35]
> mb86a16_write: writing to [0x08],Reg[0x25],Data[0x01]
> mb86a16_write: writing to [0x08],Reg[0x2b],Data[0x21]
> mb86a16_write: writing to [0x08],Reg[0x2c],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x0c],Data[0x04]
> mb86a16_set_fe: ------ Signal detect ------ [swp_freq=[1574250, srate=27500]]
> mb86a16_write: writing to [0x08],Reg[0x21],Data[0x13]
> mb86a16_write: writing to [0x08],Reg[0x22],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x23],Data[0x31]
> mb86a16_write: writing to [0x08],Reg[0x24],Data[0x35]
> mb86a16_write: writing to [0x08],Reg[0x25],Data[0x01]
> mb86a16_write: writing to [0x08],Reg[0x2b],Data[0x21]
> mb86a16_write: writing to [0x08],Reg[0x2c],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x36],Data[0x36]
> mb86a16_write: writing to [0x08],Reg[0x03],Data[0x02]
> mb86a16_write: writing to [0x08],Reg[0x04],Data[0xe1]
> mb86a16_write: writing to [0x08],Reg[0x05],Data[0x03]
> mb86a16_write: writing to [0x08],Reg[0x0c],Data[0x04]
> mb86a16_write: writing to [0x08],Reg[0x03],Data[0x02]
> mb86a16_write: writing to [0x08],Reg[0x04],Data[0x4e]
> mb86a16_write: writing to [0x08],Reg[0x05],Data[0x03]
> mb86a16_write: writing to [0x08],Reg[0x0c],Data[0x04]
> mb86a16_write: writing to [0x08],Reg[0x03],Data[0x02]
> mb86a16_write: writing to [0x08],Reg[0x04],Data[0xbb]
> mb86a16_write: writing to [0x08],Reg[0x05],Data[0x02]
> mb86a16_write: writing to [0x08],Reg[0x0c],Data[0x04]
> mb86a16_write: writing to [0x08],Reg[0x36],Data[0x06]
> mb86a16_set_fe: ***** Signal Found *****
> mb86a16_set_fe:  Start Freq Error Check
> mb86a16_write: writing to [0x08],Reg[0x33],Data[0x39]
> mb86a16_write: writing to [0x08],Reg[0x03],Data[0x02]
> mb86a16_write: writing to [0x08],Reg[0x04],Data[0x4e]
> mb86a16_write: writing to [0x08],Reg[0x05],Data[0x03]
> mb86a16_write: writing to [0x08],Reg[0x49],Data[0x7e]
> mb86a16_write: writing to [0x08],Reg[0x2a],Data[0x12]
> mb86a16_write: writing to [0x08],Reg[0x58],Data[0x21]
> mb86a16_write: writing to [0x08],Reg[0x59],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x0c],Data[0x04]
> mb86a16_write: writing to [0x08],Reg[0x03],Data[0x09]
> mb86a16_write: writing to [0x08],Reg[0x04],Data[0x7f]
> mb86a16_write: writing to [0x08],Reg[0x05],Data[0x06]
> mb86a16_write: writing to [0x08],Reg[0x2a],Data[0x2a]
> mb86a16_write: writing to [0x08],Reg[0x2d],Data[0x10]
> mb86a16_write: writing to [0x08],Reg[0x21],Data[0x19]
> mb86a16_write: writing to [0x08],Reg[0x22],Data[0x20]
> mb86a16_write: writing to [0x08],Reg[0x23],Data[0x61]
> mb86a16_write: writing to [0x08],Reg[0x24],Data[0xd4]
> mb86a16_write: writing to [0x08],Reg[0x25],Data[0x01]
> mb86a16_write: writing to [0x08],Reg[0x2b],Data[0xdb]
> mb86a16_write: writing to [0x08],Reg[0x2c],Data[0x0f]
> mb86a16_write: writing to [0x08],Reg[0x21],Data[0x19]
> mb86a16_write: writing to [0x08],Reg[0x22],Data[0x20]
> mb86a16_write: writing to [0x08],Reg[0x23],Data[0x62]
> mb86a16_write: writing to [0x08],Reg[0x24],Data[0x04]
> mb86a16_write: writing to [0x08],Reg[0x25],Data[0x01]
> mb86a16_write: writing to [0x08],Reg[0x2b],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x2c],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x21],Data[0x19]
> mb86a16_write: writing to [0x08],Reg[0x22],Data[0x20]
> mb86a16_write: writing to [0x08],Reg[0x23],Data[0x62]
> mb86a16_write: writing to [0x08],Reg[0x24],Data[0x35]
> mb86a16_write: writing to [0x08],Reg[0x25],Data[0x01]
> mb86a16_write: writing to [0x08],Reg[0x2b],Data[0x27]
> mb86a16_write: writing to [0x08],Reg[0x2c],Data[0x00]
> mb86a16_write: writing to [0x08],Reg[0x21],Data[0x19]
> mb86a16_write: writing to [0x08],Reg[0x22],Data[0x20]
> mb86a16_write: writing to [0x08],Reg[0x23],Data[0x61]
> mb86a16_write: writing to [0x08],Reg[0x24],Data[0x94]
> mb86a16_write: writing to [0x08],Reg[0x25],Data[0x01]
> mb86a16_write: writing to [0x08],Reg[0x2b],Data[0x0c]
> mb86a16_write: writing to [0x08],Reg[0x2c],Data[0x00]
> mb86a16_set_fe: SWEEP Frequency = 1568011
> mb86a16_set_fe: Adjusting .., DELTA Freq = 0, SWEEP Freq=1568011
> mb86a16_set_fe: NO  --  SIGNAL !
> sync_chk: Status = 80,
> 
> 
> A KNC card in the same box on the same cable works ok.
> Any ideas?

Can you try with szap -x (exit after tuning) the status for the same ?
It does re-search the spectrum thrice for a valid signal using the AFC.
In the current logs, i see only one search pattern.

Thanks for giving it a go.

Manu




More information about the linux-dvb mailing list