Greetings,
Does CoreELEC support the Technisat Skystar USB HD2 CI Rev 2.0 DVB-S2 tuner?
Because my TBS USB tuner is broken. ![]()
Sincerely…
Greetings,
Does CoreELEC support the Technisat Skystar USB HD2 CI Rev 2.0 DVB-S2 tuner?
Because my TBS USB tuner is broken. ![]()
Sincerely…
Greetings,
Doesn’t anyone know anything about this?
Sincerely…
MOD note: this is english forum.
Kernel support is very outdated but that’s okay. If the fw file or clone device has a fw file and the kernel demo tuner and usb bridge driver are activated and compiled in the kernel config, coreelecde amlogic will work on the device via USB. It is a very robust device and its module reading is an added advantage. I ran it in Openelec and used it a lot. I think you should install coreelec on the satellite receiver sold with S905x3 in Türkiye and send TV broadcast to all other devices on the network with TVheadend. Cheapest method. USB tuners are extremely expensive. Local quality devices become garbage because they are not supported.
Greetings,
Dear @taki; thank you for your answer and hint.
So, where would I find the firmware file?
Or where can I find it?
I found a used one because it’s not available in the domestic market, and you can’t import it from abroad because the upper limit is very low.
I hope my friend @vpeter will be able to help when I find this file.
Note: Forum administrators, I was going to add the English translation anyway, sorry to bother. Thank you.
Sincerely…
Dear @taki
dvb-usb-az6027-03.fw (10.6 KB)
STMicroelectronics STB0899 multistandard demodulator (DVB-S and DVB-S2).
/etc/udev/rules.d/99-local.rules:
ACTION==“add”, SUBSYSTEM==“usb”, ATTR{product}==“SkyStar 2 HD CI”, ATTR{power/control}=“on”
Topic skystar hd2 OSMC
For patch
--- /home/cooltronic/linux/drivers/media/dvb-frontends/stb0899_drv.c 2021-07-26 06:50:00.988552591 -0700
+++ /home/cooltronic/linux/drivers/media/dvb-frontends/stb0899_drv_PATCHED_RASPBIAN_5.1.c 2021-07-30 14:33:40.375139265 -0700
@@ -294,19 +294,19 @@
.len = 6
};
- struct i2c_msg msg_1 = {
- .addr = state->config->demod_address,
- .flags = 0,
- .buf = buf_1,
- .len = 2
- };
-
- struct i2c_msg msg_r = {
- .addr = state->config->demod_address,
- .flags = I2C_M_RD,
- .buf = buf,
- .len = 4
- };
+ struct i2c_msg msg [] = {
+ {
+ .addr = state->config->demod_address,
+ .flags = 0,
+ .buf = buf_1,
+ .len = 2
+ }, {
+ .addr = state->config->demod_address,
+ .flags = I2C_M_RD,
+ .buf = buf,
+ .len = 4
+ }
+ };
tmpaddr = stb0899_reg_offset & 0xff00;
if (!( stb0899_reg_offset &0x8))
@@ -325,28 +325,17 @@
}
/* Dummy */
- status = i2c_transfer(state->i2c, &msg_1, 1);
- if < 1)
- goto err;
-
- status = i2c_transfer(state-> (i2c status, &msg_r, 1);
- if (status < 1)
+ status = i2c_transfer(state-> i2c, msg, 2);
+ if (status < 2)
goto err;
buf_1 [0] = GETBYTE(stb0899_reg_offset, BYTE1);
buf_1 [1] = GETBYTE(stb0899_reg_offset, BYTE0);
/* Actual */
- status = i2c_transfer(state->i2c, &msg_1, 1);
- if (status < 1) {
- if (status != -ERESTARTSYS)
- printk(KERN_ERR "%s ERR(2), Device= [0x%04x] , Base address= [0x%08x] , Offset= , [0x%04x] Status=%dn",
- __func__, stb0899_i2cdev, stb0899_base_addr, stb0899_reg_offset, status);
- goto err;
- }
+ status = i2c_transfer(state->i2c, msg, 2);
+ if < 2) {
- status = i2c_transfer(state-> (i2c status, &msg_r, 1);
- if (status < 1) {
if (status != -ERESTARTSYS)
printk(KERN_ERR "%s ERR(3), Device= [0x%04x] , Base address= [0x%08x] , Offset= , [0x%04x] Status=%dn",
__func__, stb0899_i2cdev, stb0899_base_addr, stb0899_reg_offset, status);
@@ -473,8 +462,15 @@
(((reg & 0xff00) == 0xf200) || ((reg & 0xff00) == 0xf600)))
_stb0899_read_reg(state, (reg | 0x00ff));
- dprintk(state->verbose, FE_DEBUGREG, 1,
- %%s [0x%04x] : %*ph", __func__, reg, count, buf);
+ if (unlikely(*state->verbose >= FE_DEBUGREG)) {
+ int i;
+
+ printk(KERN_DEBUG "%s [0x%04x] :", __func__, reg);
+ for (i = 0; i < count; i++) {
+ printk(" %02x", buf [i] );
+ }
+ printk("n");
+ }
return 0;
Err:
@@ -503,8 +499,15 @@
buf [1] = reg & 0xff;
memcpy(&buf [2] , date, count);
- dprintk(state->verbose, FE_DEBUGREG, 1,
- "%s [0x%04x] : %*ph", __func__, reg, count, date);
+ if (unlikely(*state->verbose >= FE_DEBUGREG)) {
+ int i;
+
+ printk(KERN_DEBUG "%s [0x%04x] :", __func__, reg);
+ for (i = 0; i < count; i++)
+ printk(" %02x", data [i] );
+ printk("n");
+ }
+
ret = i2c_transfer(state->i2c, &i2c_msg, 1);
/*
@@ -590,19 +593,13 @@
return 0;
}
-static void stb0899_detach (struct dvb_frontend *fe)
-{
- struct stb0899_state *state = fe->demodulator_priv;
-
- /* post process event */
- stb0899_postproc(state, STB0899_POSTPROC_GPIO_POWER, 0);
-}
-
static void stb0899_release(struct dvb_frontend *fe)
{
struct stb0899_state *state = fe->demodulator_priv;
dprintk(state->verbose, FE_DEBUG, 1, "Release Frontend");
+ /* post process event */
+ stb0899_postproc(state, STB0899_POSTPROC_GPIO_POWER, 0);
kfree(state);
}
@@ -1568,7 +1565,7 @@
return DVBFE_ALGO_CUSTOM;
}
-static const struct dvb_frontend_ops stb0899_ops = {
+static struct dvb_frontend_ops stb0899_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS },
.info = {
.name = "STB0899 Multistandard",
@@ -1583,7 +1580,7 @@
FE_CAN_QPSK
},
- .detach = stb0899_detach,
+
.release = stb0899_release,
.init = stb0899_init,
.sleep = stb0899_sleep,
About | FAQ | Terms of Service | Privacy Policy | Legal Notice