-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Are DiSEqC 1.0 commands supported? #12
Comments
hi! it's been a long time since I last touched this project, but a quick look shows the STV0299 (the frontend IC used in DM500S boards) does support DiSEqC: But maybe there's something else needed for it to work, like GPIO pins or similar. |
Good idea to check with stock, should indeed have done that in first place on this particular device. I have backed up the original firmware, but I'm not sure which commands I have to use on your firmware to restore it. It seems your firmware not only uses mtd0 but also mtd4 or mtd5. Could you hint any flash commands, I will try and report back soon. |
in principle you should go ahead and flash partition 0. the other partitions are for user data, it's just that I cheat and use them for firmware as if it was one big combined partition (IIRC). |
I could Don't know if it is necessary at all to use I guess the worst case scenario is recovering via RS232 serial port using the bootloader directly or use the DreamUp tool on a Windows machine. |
Restoring to dreambox firmware succeeded and 4 position DiSEqC AA AB BA BB is scanning right now as we speek. Only AA(astra 19.2), AB(hotbird 13.0), BB(astra 28.2) scanned since BA (Astra 23.5) doesn't have any valid transponders with this old dreambox firmware so won't find anyhting(could try blind scan though). Steps for restoring dreambox firmware from dm500-satip:
|
okay, so the hardware does have diseqc support... all I can tell you is that the code is there: if you want to investigate, you should start minisatip in debug mode and verify that the diseqc commands are indeed processed (and ioctls are issued against the kernel). if this works but the ioctls fail, the stv0299 module can be loaded in debug mode. if these two things appear to be working properly, the way would be to do some reverse engineering on the closed source drivers to see how they do it. but again, I don't think I'll have time for this anytime soon, sorry :( |
No need to say sorry, you already did a great job 👍 and we all know this device is nearing end of lifetime. I'm already happy you replied on topic and showed me direction to think a little further but shouldn't put to much effort in it... The device is capable of doing DiSEqC in original firmware and is verified on my labelfree clonebox. The box uses a STV0299 as a Frontend, which happen to have a very recent 😄 2022 DiSEqC related kernelpatch under linux yours From what I have read I understand that DiSEqC commands can be sent by different parts of the DVB-S receiver pathway, as in hack the frontend to do the job or use a other IC's /Tuner/Demod/dontknowname in the signal path todo it. This seem to be the case with a sort of legacy path that is refered in the driver that in some cases STV0299 doesn't do the Job well a other IC might do it if available and capable? Debugging X86: My approach would be test these pci-dvb-s devices with Ubuntu 16.04 or 20.04 directly with Tvheadend 4.2 to see if they have DiSEqC functioning at all. Than remove tvheadend, install minisatip(master) and use Tvheadend on a different host with satip tuner config. If that works than downgrade minisatip to version 0.4 that matches DM500s if that still works. Than make a limited selection of matching DVB-S transponders frequencies High/Low/Vert/Horz for 4 satelites and run STV0299,budget(kernel module), minisatip, tvheadend all in debug mode and log everything. Debugging DM500: Does it make any sense at all doing the X86 debugging route with these 2 pci-cards or are we comparing apples & oranges and should just try to recompile DM500S with seperate module debug mode and maybe even recent 2022 diseqc kernel patch? |
I see! Answering point by point:
I've reviewed this patch and it doesn't appear to fix a bug, or at least not the kind of bug that would make DiSEqC not work at all. Even if there are more recent patchsets, unless you see one that does seem to fix a bug, I wouldn't spend too much time trying to backport the changes into this firmware.
Yes, unfortunately I compiled the stv0299 module with Y rather than M.
It's just my intuition, but I'd advise focusing your efforts on playing with the DM500S board rather than comparing behaviour to your pci cards, even if they have the same frontend. To build your own kernel / firmware, your best shot is probably to follow the instructions in BUILDING.md with an |
Bricked... but recovered via DreamUp using the 'backup-mtd0.img' made earlier. I can confirm that your build instructions are still valid on ubuntu 14.04.6 amd64 in april 2022(apt needs universe/multiverse/src/git, host-isl retries and finds different mirror). Reflashed with own dirty build image having stv0299 as a module and commented S70satip script on boot so everything is started manually. Also did the x86/64 debug route on ubuntu 20.04.1 and verified both stv0299 equiped pci dvb-s cards (Hauppauge&Technotrend) worked with DiSEqC aa:ba:ba:bb in Tvheadend 4.2 stable. Then I started Tvheadend without dvb support with argument
Some dmesg snippet without debug, although loading the stv0299 first it won't show in dmesg except after loading dvb_stbx25xx...
Some snippet of dmesg using debug and scanning on diseqc bb astr282 still reports aa astra192 channels:
Does gdb needs to run on dreambox to further debug module, or are some /proc/sys/debug options available, it seems the minisatip 0.4 version doesn't have any debug or verbose options yet? |
Hmm, from the dmesg I see that minisatip is correctly issuing the ioctls and the kernel is processing them. So yes, like I said, the next step would probably be to reverse engineer the drivers on the stock firmware (in particular by sniffing their I2C transfers, since the I2C module is open source, and comparing them to the transfers done by our driver).
Good. In the README there's a link to my minisatip fork, in particular it shows the differences between upstream 0.4 and the version on dm500-satip. I don't remember touching anything related to DiSEqC, but I may be wrong.
I'd say it had at least some sort of debug system, in the form of command line options and you could adjust the log level. In any case, you should be able to adjust buildroot to include a gdb / gdbserver to debug further... Or debug the kernel via kgdb. |
Doing some quick testing using a Technisat Multitenne Dish which integrates a DiSEqC 1.0 switch and 4 LNB satellite positions will only give Astra 1 19,2:
Playing around with the minisatip arguments/switches
-d 0:1-0
,-d 0:1-1
,-d 0:0-1
for commited/uncommited diseqc won't change anything and Tvheadend is only able to tune Astra 1. Is any diseqc feature implemented in your dm500-satip?The outcome of scanning for instance BB Astra2 28,2 is that it will find services from Astra1 19,2 but only the ones that resamble the transponder frequencies/parameters that match between Astra2 28,2 and Astra1 19,2.
With other minisatip based 'satip-axe' tuner Telestar Digibit R1 device, I have used Tvheadend successfull tuning other satelites using diseqc but is offcourse complete other hardware: https://github.com/perexg/satip-axe
The text was updated successfully, but these errors were encountered: