diff -Naur 1/scan.c 2/scan.c --- 1/scan.c 2008-04-03 02:00:19.000000000 +0200 +++ 2/scan.c 2008-04-03 12:29:32.000000000 +0200 @@ -1674,15 +1674,18 @@ } struct dvbfe_info fe_info1; + enum dvbfe_delsys delivery; // a temporary hack, need to clean memset(&fe_info1, 0, sizeof (struct dvbfe_info)); if(t->modulation_system == 0) - fe_info1.delivery = DVBFE_DELSYS_DVBS; + delivery = DVBFE_DELSYS_DVBS; else if(t->modulation_system == 1) - fe_info1.delivery = DVBFE_DELSYS_DVBS2; - + delivery = DVBFE_DELSYS_DVBS2; + + ioctl(frontend_fd, DVBFE_SET_DELSYS, &delivery); //switch system + int result = ioctl(frontend_fd, DVBFE_GET_INFO, &fe_info1); if (result < 0) { perror("ioctl DVBFE_GET_INFO failed"); @@ -1690,7 +1693,7 @@ return -1; } - switch (fe_info1.delivery) { + switch (delivery) { case DVBFE_DELSYS_DVBS: info("----------------------------------> Using '%s' DVB-S\n", fe_info.name); break; @@ -1701,7 +1704,7 @@ info("----------------------------------> Using '%s' DVB-S2\n", fe_info.name); break; default: - info("Unsupported Delivery system (%d)!\n", fe_info1.delivery); + info("Unsupported Delivery system (%d)!\n", delivery); t->last_tuning_failed = 1; return -1; }