Hello Antti, Olli! I tried media-video/kaffeine and now I have all 32 channels which translated in Kyiv, Ukraine! https://owncloud.kaa.org.ua/index.php/s/SvyIiTry3u7zZqj What I should do with `si2157_ops` structure? si2147 and si2157 have 42-870 MHz frequency range, but si2158 have 42-1002 MHz frequency range! Should I define second `dvb_tuner_ops` structure? Also, Evromedia USB Full Hybrid Full HD require changes in cx231xx_i2c_send_bytes(), like this: --- a/drivers/media/usb/cx231xx/cx231xx-i2c.c +++ b/drivers/media/usb/cx231xx/cx231xx-i2c.c @@ -171,6 +171,43 @@ static int cx231xx_i2c_send_bytes( bus->i2c_nostop = 0; bus->i2c_reserve = 0; +//} else if (is_tuner(dev, bus, msg, TUNER_SI2158)) { +} else if (0x60 == msg->addr && msg->len > 4) { + size = msg->len; + + /* special case for Evromedia USB Full Hybrid Full HD */ + saddr_len = 1; + + /* adjust the length to correct length */ + size -= saddr_len; + + buf_ptr = (u8 *) (msg->buf + 1); + + do { + /* prepare xfer_data struct */ + req_data.dev_addr = msg->addr; + req_data.direction = msg->flags; + req_data.saddr_len = saddr_len; + req_data.saddr_dat = msg->buf[0]; + req_data.buf_size = size > 4 ? 4 : size; + req_data.p_buffer = (u8 *) (buf_ptr + loop * 4); + + bus->i2c_nostop = (size > 4) ? 1 : 0; + bus->i2c_reserve = (loop == 0) ? 0 : 1; + + /* usb send command */ + status = dev->cx231xx_send_usb_command(bus, &req_data); + ++ loop; + + if (size >= 4) + size -= 4; + else + size = 0; + + } while (size > 0); + + bus->i2c_nostop = 0; + bus->i2c_reserve = 0; How I can implement this in right way? :) Any ideas? PS: \xc0\x00\x0c\x00\x00\x01\x01\x01\x01\x01\x01\x02\x00\x00\x01 also fine for si2158, I have signal! -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html