With Android, I’m still using DVB normally, without any problems. Perhaps I’ll try restoring my Android to factory settings and reinstalling Coreelec to see if that helps.
maybe i expressed myself not precise, this hardware is not compatible with the CE driver.
I disassembled and photographed the DVB tuner, and I found it to be no different from the photo that @taki posted.
https://postimg.cc/5Yhp1gqp
https://postimg.cc/WFBSj86C
I can do nothing if the chip does not communicate with the CPU. Maybe @taki did some additional trickery to make it work.
CoreELEC, what’s the build date of the version? The images you sent don’t open. The front-end power management system (S8035BE) on Mecool motherboards is often burned out. Also, I need a photo of the tuner; it might be different. Send the Android DTS file.
I think you’re using a different Avl 6862 addon. Install the latest daily build, then install Avl6862 from your own repository.
I’m using the latest CE version NO, using the dtb file in the device_trees folder. I’ve installed the AVL6862 add-on from the CE repository.
The UI source management system (S8035BE) is not faulty, as I’m still using DVB on Android without any problems. I’ve tested with both measuring devices and it works fine.
Update file DTB android : I only know how to extract the data from my device.
dtb android mecool k5.zip (44.3 KB)
The problem is that the i2c address is not being read correctly. It was working with the ce no dated 10/30/2025. More precisely, avl6862 i2caddress=0x14. The problem is definitely not in the avl6862 addon. I tried I2C clock speeds between 100-400 kHz (100, 200, 300, and 400) and the result remained unchanged at 0x14. There are two possible scenarios here.
1- This happened as a result of commit patch changes made in the common drivers or the linux-amlogic folder after October 30, 2025, or changes made in pinctrl.
2- Since tuner power and reset gpio are not defined in the dts file, and there is no gpio pull up/down, the av6862 driver is not running correctly, meaning that the trigger voltage is not coming in, so the correct i2c address is incorrect or unstable. In other words, it works sometimes and sometimes it doesn’t. Because I tried it, when it caught 0x14, it attached to dvb correctly.
The second issue seems more likely.
CoreELEC:~ # dmesg | grep -i dvb
[ 2.132431] dvb power gpio invalid
[ 2.132523] aml_dvb_extern_init: OK, version: V1.28
[ 43.653591] probe amlogic dvb driver [V2.02]
[ 43.653796] aml_dvb_get_adapter need register adapter first.
[ 43.653800] DVB: registering new adapter (amlogic-dvb)
[ 43.706138] DVB: Set DMX0 TS_RECORDER_ENABLE to 0
[ 43.706144] DVB: Set DMX1 TS_RECORDER_ENABLE to 0
[ 43.706147] DVB: Set DMX2 TS_RECORDER_ENABLE to 0
[ 43.706150] DVB: reset ASYNC FIFOs
[ 43.706387] DVB: Set DMX0 TS_RECORDER_ENABLE to 0
[ 43.706395] DVB: Set DMX1 TS_RECORDER_ENABLE to 0
[ 43.706398] DVB: Set DMX2 TS_RECORDER_ENABLE to 0
[ 43.706400] DVB: reset ASYNC FIFOs
[ 43.706405] DVB:dmx_reset_dmx_hw_ex_unlock into
[ 43.706447] DVB: demux0 smallsec buf disable
[ 43.706452] DVB: demux0 timeout disable
[ 43.706454] DVB: demux0 timeout enable:timeout(9000),ch(0xfffffff8),match(1)
[ 43.706500] DVB: demux0 smallsec buf disable
[ 43.706503] DVB: demux0 timeout disable
[ 43.706505] DVB: demux0 timeout enable:timeout(9000),ch(0xfffffff8),match(1)
[ 44.056121] i2c i2c-3: dvb_meson: i2c wr failed=-6 len=3
[ 44.056185] i2c i2c-3: dvb_meson: i2c rd failed=-6 len=4
[ 44.056246] i2c i2c-3: dvb_meson: i2c wr failed=-6 len=3
[ 44.056305] i2c i2c-3: dvb_meson: i2c rd failed=-6 len=4
[ 44.056310] i2c i2c-3: dvb_meson: attach failed reading id
[ 44.056437] i2c i2c-3: dvb_meson: i2c wr failed=-6 len=3
[ 44.056505] i2c i2c-3: dvb_meson: i2c rd failed=-6 len=4
[ 44.056594] i2c i2c-3: dvb_meson: i2c wr failed=-6 len=3
[ 44.056654] i2c i2c-3: dvb_meson: i2c rd failed=-6 len=4
[ 44.056660] i2c i2c-3: dvb_meson: attach failed reading id
[ 44.056763] i2c i2c-3: dvb_meson: i2c wr failed=-6 len=3
[ 44.056824] i2c i2c-3: dvb_meson: i2c rd failed=-6 len=4
[ 44.056883] i2c i2c-3: dvb_meson: i2c wr failed=-6 len=3
[ 44.056941] i2c i2c-3: dvb_meson: i2c rd failed=-6 len=4
[ 44.056946] i2c i2c-3: dvb_meson: attach failed reading id
CoreELEC:~ # i2cdetec -y 3
-sh: i2cdetec: command not found
CoreELEC:~ # i2cdetect -y 3
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- 15 -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
CoreELEC:~ #
I managed to get the AV2018 tuner and AVL6261C demod working. The signal and channels are working, but I need to optimize the signal level a bit. I’ll share the solution if I can add the existing Media_Tree wrapper. Many thanks to rozpruwacz for showing the solution. I’m investigating why the Mecool K5 is showing the wrong I2C address; it’s most likely caused by a change made on or after October 30th. I’ll share the solution if I can.
CoreELEC:~ # dvbv5-scan -l UNIVERSAL -a 0 -W 0 --verbose /storage//.kodi/addons/service.tvheadend43/dvb-scan/dvb-s/Trksat-4A-42-taki.0E
Using LNBf UNIVERSAL
Old European Universal. Nowadays mostly replaced by Astra 19.2E
Freqs : 10800 to 11800 MHz, LO: 9750 MHz
Freqs : 11600 to 12700 MHz, LO: 10600 MHz
using demux 'dvb0.demux0'
Device Availink avl6261 (/dev/dvb/adapter0/frontend0) capabilities:
CAN_2G_MODULATION
CAN_FEC_1_2
CAN_FEC_2_3
CAN_FEC_3_4
CAN_FEC_4_5
CAN_FEC_5_6
CAN_FEC_6_7
CAN_FEC_7_8
CAN_FEC_AUTO
CAN_INVERSION_AUTO
CAN_MULTISTREAM
CAN_MUTE_TS
CAN_QAM_16
CAN_QAM_32
CAN_QAM_64
CAN_QAM_AUTO
CAN_QPSK
CAN_RECOVER
CAN_TRANSMISSION_MODE_AUTO
DVB API Version 5.11, Current v5 delivery system: DVBS2
Supported delivery systems:
DVBS
[DVBS2]
Frequency range for the current standard:
From: 950 MHz
To: 2.15 GHz
Symbol rate ranges for the current standard:
From: 1.00 MBauds
To: 55.0 MBauds
Failed to guess country from the current locale setting.
ERROR command BANDWIDTH_HZ (5) not found during retrieve
Cannot calc frequency shift. Either bandwidth/symbol-rate is unavailable (yet).
Scanning frequency #1 11767000
frequency: 11767.00 MHz, high_band: 1
SEC: set voltage to 13V
DiSEqC TONE: OFF
DiSEqC TONE: ON
L-Band frequency: 1167.00 MHz (offset = 10600.00 MHz)
FREQUENCY = 11767000
INVERSION = AUTO
SYMBOL_RATE = 15000000
INNER_FEC = AUTO
MODULATION = PSK/8
PILOT = 4294967295
ROLLOFF = AUTO
POLARIZATION = VERTICAL
STREAM_ID = 0
DELIVERY_SYSTEM = DVBS2
(0x00) Signal= -0.06dBm C/N= 7.33dB
Layer A: Signal= 39.00% C/N= 39.29%
Got parameters for DVBS2:
FREQUENCY = 11767000
INVERSION = AUTO
SYMBOL_RATE = 15000000
INNER_FEC = AUTO
MODULATION = PSK/8
PILOT = 4294967295
ROLLOFF = AUTO
POLARIZATION = VERTICAL
Lock (0x1f) Signal= -0.06dBm C/N= 8.29dB
Layer A: Signal= 41.00% C/N= 42.73%
dvb_read_sections: waiting for table ID 0x00, program ID 0x00
dvb_parse_section: received table 0x00, extension ID 0xa860, section 0/0
dvb_parse_section: table 0x00, extension ID 0xa860: done
PAT
| table_id 0x00
| section_length 13
| one 3
| zero 0
| syntax 1
| transport_stream_id 43104
| current_next 1
| version 2
| one2 3
| section_number 0
| last_section_number 0
|\ 1 program pid
| pid 0x1293: service 0x3fac
Program #0 ID 0x1293, service ID 0x3fac
dvb_read_sections: waiting for table ID 0x02, program ID 0x1293
dvb_parse_section: received table 0x02, extension ID 0x3fac, section 0/0
dvb_parse_section: table 0x02, extension ID 0x3fac: done
PMT
| table_id 0x02
| section_length 81
| one 3
| zero 0
| syntax 1
| transport_stream_id 16300
| current_next 1
| version 29
| one2 3
| section_number 0
| last_section_number 0
|- pcr_pid 12f7
| reserved2 7
| descriptor length 0
| zero3 0
| reserved3 15
|\
|- stream 0x12f7: HEVC (24)
| descriptor length 22
| 0x38: Unknown descriptor
| 02 20 00 00 00 b0 00 00 00 00 00 99 9f 1f 1f . .............
| 0x0e: maximum_bitrate_descriptor
| c0 fb 4f ..O
|- stream 0x135b: ISO/IEC 13818-1 Private Data (6)
| descriptor length 15
| 0x0a: iso639_language_descriptor
| lang: tur (type: 0)
| 0x7a: enhanced_AC_3_descriptor
| 40 10 @.
| 0x0e: maximum_bitrate_descriptor
| c0 02 9f ...
|- stream 0x13bf: Audio ISO/IEC 13818-7 ADTS (f)
| descriptor length 16
| 0x0a: iso639_language_descriptor
| lang: tur (type: 0)
| 0x2b: mpeg2_aac_audio_descriptor
| 01 02 00 ...
| 0x0e: maximum_bitrate_descriptor
| c0 00 d1 ...
|_ 3 streams
dvb_read_sections: waiting for table ID 0x40, program ID 0x10
ERROR dvb_read_sections: no data read on section filter
ERROR error while reading the NIT table
dvb_read_sections: waiting for table ID 0x42, program ID 0x11
dvb_parse_section: received table 0x42, extension ID 0xa860, section 0/0
dvb_parse_section: table 0x42, extension ID 0xa860: done
SDT
| table_id 0x42
| section_length 43
| one 3
| zero 1
| syntax 1
| transport_stream_id 43104
| current_next 1
| version 31
| one2 3
| section_number 0
| last_section_number 0
| network_id 1070
| reserved 255
|\
|- service 0x3fac
| EIT schedule 1
| EIT present following 1
| free CA mode 0
| running status 4
| descriptor length 26
| 0x48: service_descriptor
| service type 31
| provider 'TURKSAT'
| name 'TRT 4K'
| 0x50: component_descriptor
| 09 04 01 74 75 72 ...tur
|_ 1 services
Service TRT 4K, provider TURKSAT: reserved
Storing as channel TRT 4K
Scanning frequency #2 11789000
frequency: 11789.00 MHz, high_band: 1
SEC: set voltage to 18V
DiSEqC TONE: OFF
DiSEqC TONE: ON
L-Band frequency: 1189.00 MHz (offset = 10600.00 MHz)
FREQUENCY = 11789000
INVERSION = AUTO
SYMBOL_RATE = 20000000
INNER_FEC = AUTO
MODULATION = PSK/8
PILOT = 4294967295
ROLLOFF = AUTO
POLARIZATION = HORIZONTAL
STREAM_ID = 0
DELIVERY_SYSTEM = DVBS2
(0x00) Signal= -0.06dBm C/N= 8.37dB
Layer A: Signal= 40.00% C/N= 43.11%
Scanning frequency #3 11794000
frequency: 11794.00 MHz, high_band: 1
SEC: set voltage to 13V
DiSEqC TONE: OFF
DiSEqC TONE: ON
L-Band frequency: 1194.00 MHz (offset = 10600.00 MHz)
FREQUENCY = 11794000
INVERSION = AUTO
SYMBOL_RATE = 30000000
INNER_FEC = AUTO
MODULATION = PSK/8
PILOT = 4294967295
ROLLOFF = AUTO
POLARIZATION = VERTICAL
STREAM_ID = 0
DELIVERY_SYSTEM = DVBS2
(0x00) Signal= -0.06dBm C/N= 8.37dB
Layer A: Signal= 40.00% C/N= 43.11%
^Cdvb_read_sections: waiting for table ID 0x00, program ID 0x00
SEC: set voltage to OFF
CoreELEC:~ #
I found the avl6221 driver of the old repository in Chewitt’s old 2020 repo and ran it. But tvheadend has a problem. The other drive works fine. Tuner supports dvb s/s2/s2x and multistream.
I have a Tiger receiver with an Amlogic 905x3 processor. I downloaded the latest version of CorelEC22 and installed the tuner profile from the file, but unfortunately, the channels are not working for me.
@taki how did You added this dvb-avl driver to CE ? Have You followed the description in README of this project ? It assumes kernel 3.14 so I suppose it did not worked out-of the box ?
@khaledahmed as always attach your dmesg output
Chewitt aml_ dvb drivers and worked with your wrapper version
chewitt_an_your_wrapper_version.zip (516.0 KB)
dts
fe_num = <1>;
fe0_demod = "avl6221c";
fe0_i2c_adap_id = <&i2c2>;
fe0_demod_i2c_addr = <0x14>;
fe0_demod_xtal = <3>;
fe0_ts_out_mode = <1>;
fe0_ts_clk_pol = <1>;
fe0_ts_clk = <1>;
fe0_ts_data_pin = <0>;
fe0_ts = <1>;
fe0_tuner0 = <0>;
tuner_num = <1>;
tuner0_name = "av2018";
tuner0_i2c_adap = <&i2c2>;
tuner0_i2c_addr = <0x62>;
tuner0_xtal = <27000>;
};
used edison driver. and work simple wrapper drivers. (demod wrapping tuner version)
V0_Version.zip (505.3 KB)
static struct avl_tuner av201x_avl_tuner = {
.blindscan_mode = 0,
.more_params = NULL,
.initialize = NULL,
.lock = NULL,
.get_lock_status = NULL,
.get_rf_strength = NULL,
.get_max_lpf = &av201x_get_max_lpf,
.get_min_lpf = &av201x_get_min_lpf,
.get_lpf_step_size = &av201x_get_lpf_step_size,
.get_agc_slope = &av201x_get_agc_slope,
.get_min_gain_voltage = &av201x_get_min_gain_voltage,
.get_max_gain_voltage = &av201x_get_max_gain_voltage,
.get_rf_freq_step_size = &av201x_get_rf_freq_step_size,
};
static struct av201x_config av201x_avl_config = {
.i2c_address = 0x62,
.id = ID_AV2018,
.xtal_freq = 27000,
};
dts
dvb-extern {
compatible = "amlogic, dvb-extern";
dev_name = "dvb-extern";
status = "okay";
fe_num = <1>;
fe0_demod = "avl6221c";
fe0_i2c_adap_id = <&i2c2>;
fe0_demod_i2c_addr = <0x14>;
fe0_demod_xtal = <3>;
fe0_ts_out_mode = <1>;
fe0_ts_clk_pol = <1>;
fe0_ts_clk = <1>;
fe0_ts_data_pin = <0>;
fe0_ts = <1>;
};
dvb-demux {
status = "okay";
ts1 = "parallel";
ts1_control = <0x00>;
ts1_invert = <0x00>;
pinctrl-names = "p_ts1";
pinctrl-0 = <&dvb_p_ts1_pins>;
};
};
&i2c2 {
status = "okay";
pinctrl-names="default";
pinctrl-0=<&i2c2_master_pins2>;
clock-frequency = <100000>;
};
Anyway, basically the demod driver works. The problematic part is not being able to read the correct tuner i2c address after software-based reset. chewitt dvb drivers is based on your wrapper and connects the demod and tuner through the wrapper. I think it works very well. A correction needs to be made to see only the tvheadend signal bar. The edison demod driver does not need dts tuner definition since it connects the tuner automatically. I think this works well too. But due to health problems, I have taken a break from this job. In this way, I learned a lot of C programming languages. I landed on the hello word. I also got help from AI. I think someone who is proficient in C+ language can do this job very easily via AI. I believe you will add a better driver professionally. There is also an i2c 0x15 reading error in the mecool series. There is an error that is not caused by these dvb drivers. dts takes over the pin on the i2c line one node earlier and creates this error.
mecool k5 fix
/* Perform hard reset if reset GPIO is configured */
if (cfg->reset.pin >= 0) {
pr_info("AVL68xx: performing hard reset on gpio %d\n", cfg->reset.pin);
/* Set as output, start HIGH (reset deasserted - assuming ACTIVE_LOW) */
aml_gpio_direction_output(cfg->reset.pin, 1);
msleep(10);
/* Assert reset (LOW) */
aml_gpio_set_value(cfg->reset.pin, 0);
msleep(600);
/* Deassert reset (HIGH) */
aml_gpio_set_value(cfg->reset.pin, 1);
msleep(200);
pr_info("AVL68xx: hard reset completed\n");
} else {
pr_warn("AVL68xx: WARNING - no reset GPIO configured!\n");
pr_warn("AVL68xx: Device may not work without hard reset.\n");
}
Hi @taki, please guide me on how to install version NO so that this fix can be applied to Mecool K5.
fix for Gpio : GPIO fix – Google Drive
@rozpruwacz testing patch for “mecool m8s dvb s2/s2x “
branch : ”coreelec-21-amlogic-dvb-demux”
copy to : projects/Amlogic-ce/devices/Amlogic-ng/patches/linux/linux-12-m8s-dvb-s2x.patch
From: CoreELEC DVB port
Subject: [PATCH] arm64: dts: amlogic: add Mecool M8S Plus DVB-S2X device tree
Add DTS for Mecool M8S Plus with Montage M88RS6060 DVB-S/S2/S2X tuner.
Hardware confirmed on live device:
- SoC: Amlogic S905D (GXL, gxl_p231_1g)
- Demod+RF: Montage M88RS6060 (all-in-one), I2C-C bus 2, addr 0x69
- TS: parallel, GPIODV_0..10 (tsin_a)
- Reset: GPIODV_13 (gpio-217)
- Power: GPIODV_14 (gpio-218)
- LNB sel: GPIODV_15 (gpio-219)
Note: Android DTB incorrectly names demod "Avl6211" — remnant of a failed
DVB-T custom ROM port. Actual chip is M88RS6060 per dmesg on live device:
"RS6060 chip, demod id = e2" / "M88RS6060 attached!"
Driver path: aml_m88dm6k_attach() -> m88rs6060_attach()
---
arch/arm64/boot/dts/amlogic/Makefile | 1 +
arch/arm64/boot/dts/amlogic/coreelec-gxl/gxl_p231_1g_m8s_dvb-s2x.dts | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 136 insertions(+)
create mode 100644 arch/arm64/boot/dts/amlogic/coreelec-gxl/gxl_p231_1g_m8s_dvb-s2x.dts
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -82,6 +82,7 @@ dtb-$(CONFIG_ARM64) += coreelec-gxl/gxl_p231_1g.dtb
dtb-$(CONFIG_ARM64) += coreelec-gxl/gxl_p231_1g_a95xr.dtb
dtb-$(CONFIG_ARM64) += coreelec-gxl/gxl_p231_1g_m8s.dtb
dtb-$(CONFIG_ARM64) += coreelec-gxl/gxl_p231_1g_m8s_dvb-s2.dtb
+dtb-$(CONFIG_ARM64) += coreelec-gxl/gxl_p231_1g_m8s_dvb-s2x.dtb
dtb-$(CONFIG_ARM64) += coreelec-gxl/gxl_p231_2g.dtb
dtb-$(CONFIG_ARM64) += coreelec-gxl/gxl_p231_2g_dvb.dtb
dtb-$(CONFIG_ARM64) += coreelec-gxl/gxl_p231_2g_dvb_ser.dtb
diff --git a/arch/arm64/boot/dts/amlogic/coreelec-gxl/gxl_p231_1g_m8s_dvb-s2x.dts b/arch/arm64/boot/dts/amlogic/coreelec-gxl/gxl_p231_1g_m8s_dvb-s2x.dts
new file mode 100644
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/coreelec-gxl/gxl_p231_1g_m8s_dvb-s2x.dts
@@ -0,0 +1,135 @@
+/*
+ * Mecool M8S Plus DVB-S2X device tree
+ * SoC: Amlogic S905D (GXL, gxl_p231_1g)
+ *
+ * DVB hardware (confirmed via dmesg on live device):
+ * Demodulator+Tuner: Montage M88RS6060 (DVB-S/S2/S2X, all-in-one)
+ * I2C bus: 1 (i2c-B, c11087c0)
+ * I2C addr: 0x69
+ * TS mode: parallel (GPIODV_0..10, tsin_a)
+ *
+ * GPIO assignments (confirmed via /sys/kernel/debug/gpio on live device):
+ * GPIODV_13 (gpio-217) - demod reset
+ * GPIODV_14 (gpio-218) - demod power enable
+ * GPIODV_15 (gpio-219) - LNB 13V/18V voltage select
+ *
+ * Note: Android DTB incorrectly names demod "Avl6211" -- remnant of a failed
+ * DVB-T custom ROM port. Actual chip confirmed by dmesg:
+ * "RS6060 chip, demod id = e2" / "M88RS6060 attached!"
+ *
+ * Framework: mczerski's coreelec-21-amlogic-dvb-demux (dvb-extern + dvb-demux)
+ * Driver: aml_m88dm6k_attach() -> m88rs6060_attach()
+ * ts_mode=0 (parallel), pin_ctrl=0x82 (hardcoded in wrapper)
+ */
+
+#include "gxl_p231_1g.dts"
+
+/ {
+ coreelec-dt-id = "gxl_p231_1g_m8s_dvb-s2x";
+
+ emmc {
+ status = "disabled";
+ };
+
+ nand {
+ status = "okay";
+ };
+
+ ethernet@0xc9410000 {
+ interrupts = <0 8 1>;
+ };
+
+ sysled {
+ led_gpio = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
+ };
+
+ /*
+ * DVB external frontend.
+ *
+ * fe0_demod = "m88dm6k":
+ * Maps to AM_DTV_DEMOD_M88DM6K -> aml_m88dm6k_attach() which calls
+ * m88rs6060_attach(). Wrapper hardcodes ts_mode=0 (parallel),
+ * pin_ctrl=0x82, ci_mode=0.
+ *
+ * M88RS6060 is all-in-one (demod + RF tuner), so tuner_num = 0.
+ */
+ dvb-extern {
+ compatible = "amlogic, dvb-extern";
+ status = "okay";
+
+ fe_num = <1>;
+ fe0_demod = "m88dm6k";
+ fe0_i2c_adap_id = <&i2c1>;
+ fe0_demod_i2c_addr = <0x69>;
+ fe0_ts = <0>;
+ fe0_ts_out_mode = <1>; /* 1 = parallel */
+
+ tuner_num = <0>; /* M88RS6060: all-in-one, no ext tuner */
+
+ /* Power enable: GPIODV_14 (gpio-218), confirmed via /sys/kernel/debug/gpio */
+ dvb_power_gpio = <&gpio GPIODV_14 GPIO_ACTIVE_HIGH>;
+ dvb_power_dir = <0>; /* 0 = output */
+ dvb_power_value = <1>; /* 1 = high = power on */
+ };
+
+ /*
+ * DVB hardware demux.
+ * Interrupts identical to other GXL DVB devices.
+ */
+ dvb-demux {
+ compatible = "amlogic, dvb-demux";
+ status = "okay";
+ ts0 = "parallel";
+ ts0_control = <0x0>;
+ ts0_invert = <0x0>;
+ pinctrl-names = "p_ts0", "s_ts0";
+ pinctrl-0 = <&dvb_p_ts0_pins>;
+ pinctrl-1 = <&dvb_s_ts0_pins>;
+ clocks = <&clkc CLKID_DEMUX
+ &clkc CLKID_ASYNC_FIFO
+ &clkc CLKID_AHB_ARB0
+ &clkc CLKID_HIU_IFACE>;
+ clock-names = "demux", "asyncfifo", "ahbarb0", "uparsertop";
+
+ interrupts = <GIC_SPI 23 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 5 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 53 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 19 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "demux0_irq", "demux1_irq", "demux2_irq",
+ "dvr0_irq", "dvr1_irq";
+ };
+};
+
+/*
+ * Parallel TS pinmux (tsin_a, GPIODV_0..10).
+ * Confirmed from Android DTB and AlexELEC pinmux nodes.
+ */
+&pinctrl_periphs {
+ dvb_p_ts0_pins: dvb_p_ts0_pins {
+ tsin_a {
+ groups = "tsin_d0_a_dv0",
+ "tsin_d1_7_a_dv1_7",
+ "tsin_clk_a_dv8",
+ "tsin_sop_a_dv9",
+ "tsin_d_valid_a_dv10";
+ function = "tsin_a";
+ };
+ };
+
+ dvb_s_ts0_pins: dvb_s_ts0_pins {
+ tsin_a {
+ groups = "tsin_d0_a_dv0",
+ "tsin_clk_a_dv8",
+ "tsin_sop_a_dv9",
+ "tsin_d_valid_a_dv10";
+ function = "tsin_a";
+ };
+ };
+};
+
+/* I2C-B (bus 1): M88RS6060 at 0x69 */
+&i2c0 { status = "okay"; };
+&i2c1 { status = "okay"; };
+&i2c2 { status = "okay"; };
+&i2c3 { status = "okay"; };
/storage/.config/modules-load.d/dvb.conf
echo -e "aml_hardware_dmx\naml_dvb_extern" > /storage/.config/modules-load.d/dvb.conf
changes needed for proper freq ranges in linux-11-dvb-driver.patch
.info = {
.name = "Montage RS6060",
- .frequency_min = 950000000,
- .frequency_max = 2200000000,
- .frequency_stepsize = 1020000,
- .frequency_tolerance = 5000000,
+ .frequency_min = 950000, /* kHz */
+ .frequency_max = 2200000, /* kHz */
+ .frequency_stepsize = 1020, /* kHz */
+ .frequency_tolerance = 5000, /* kHz */
.symbol_rate_min = 1000000,
.symbol_rate_max = 45000000,
},
.tuner_ops = {
.info = {
- .frequency_min = 950000000,
- .frequency_max = 2200000000
+ .frequency_min = 950000, /* kHz */
+ .frequency_max = 2200000, /* kHz */
},
},
CoreELEC:~ # dvb-fe-tool -a 0
Device Montage RS6060 (/dev/dvb/adapter0/frontend0) capabilities:
CAN_2G_MODULATION
CAN_FEC_1_2
CAN_FEC_2_3
CAN_FEC_3_4
CAN_FEC_4_5
CAN_FEC_5_6
CAN_FEC_6_7
CAN_FEC_7_8
CAN_FEC_AUTO
CAN_INVERSION_AUTO
CAN_QPSK
CAN_RECOVER
DVB API Version 5.10, Current v5 delivery system: DVBS2
Supported delivery systems:
DVBS
[DVBS2]
Frequency range for the current standard:
From: 950 MHz
To: 2.20 GHz
Step: 1.02 MHz
Tolerance: 5.00 MHz
Symbol rate ranges for the current standard:
From: 1.00 MBauds
To: 45.0 MBauds
SEC: set voltage to OFF
ERROR FE_SET_VOLTAGE: Operation not permitted
AVL6862-22.0.7.3.zip (479.9 KB)
install and then reboot
The kernel has changed:
CoreELEC:~ # uname -a
Linux CoreELEC 5.15.196 #1 SMP PREEMPT Tue Mar 17 01:33:36 IST 2026 aarch64 GNU/Linux
Please build an add-on AVL6862



