Skip to content

Commit

Permalink
V4L/DVB: Support or LME2510(C) DM04/QQBOX USB DVB-S BOXES
Browse files Browse the repository at this point in the history
DM04/QQBOX DVB-S USB BOX with LME2510C+SHARP:BS2F7HZ7395 or LME2510+LGTDQT-P001F tuner.

[mchehab@redhat.com: Fix merge conflicts/compilation and CodingStyle issues]
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Malcolm Priestley authored and Mauro Carvalho Chehab committed Oct 21, 2010
1 parent 9d10f3d commit d2f918b
Show file tree
Hide file tree
Showing 9 changed files with 1,307 additions and 1 deletion.
46 changes: 45 additions & 1 deletion Documentation/dvb/get_dvb_firmware
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ use IO::Handle;
"dec3000s", "vp7041", "dibusb", "nxt2002", "nxt2004",
"or51211", "or51132_qam", "or51132_vsb", "bluebird",
"opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718",
"af9015", "ngene", "az6027");
"af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395",
"lme2510c_s7395_old");

# Check args
syntax() if (scalar(@ARGV) != 1);
Expand Down Expand Up @@ -584,6 +585,49 @@ sub az6027{

$firmware;
}

sub lme2510_lg {
my $sourcefile = "LMEBDA_DVBS.sys";
my $hash = "fc6017ad01e79890a97ec53bea157ed2";
my $outfile = "dvb-usb-lme2510-lg.fw";
my $hasho = "caa065d5fdbd2c09ad57b399bbf55cad";

checkstandard();

verify($sourcefile, $hash);
extract($sourcefile, 4168, 3841, $outfile);
verify($outfile, $hasho);
$outfile;
}

sub lme2510c_s7395 {
my $sourcefile = "US2A0D.sys";
my $hash = "b0155a8083fb822a3bd47bc360e74601";
my $outfile = "dvb-usb-lme2510c-s7395.fw";
my $hasho = "3a3cf1aeebd17b6ddc04cebe131e94cf";

checkstandard();

verify($sourcefile, $hash);
extract($sourcefile, 37248, 3720, $outfile);
verify($outfile, $hasho);
$outfile;
}

sub lme2510c_s7395_old {
my $sourcefile = "LMEBDA_DVBS7395C.sys";
my $hash = "7572ae0eb9cdf91baabd7c0ba9e09b31";
my $outfile = "dvb-usb-lme2510c-s7395.fw";
my $hasho = "90430c5b435eb5c6f88fd44a9d950674";

checkstandard();

verify($sourcefile, $hash);
extract($sourcefile, 4208, 3881, $outfile);
verify($outfile, $hasho);
$outfile;
}

# ---------------------------------------------------------------
# Utilities

Expand Down
55 changes: 55 additions & 0 deletions Documentation/dvb/lmedm04.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
To extract firmware for the DM04/QQBOX you need to copy the
following file(s) to this directory.

for DM04+/QQBOX LME2510C (Sharp 7395 Tuner)
-------------------------------------------

The Sharp 7395 driver can be found in windows/system32/driver

US2A0D.sys (dated 17 Mar 2009)


and run
./get_dvb_firmware lme2510c_s7395

will produce
dvb-usb-lme2510c-s7395.fw

An alternative but older firmware can be found on the driver
disk DVB-S_EN_3.5A in BDADriver/driver

LMEBDA_DVBS7395C.sys (dated 18 Jan 2008)

and run
./get_dvb_firmware lme2510c_s7395_old

will produce
dvb-usb-lme2510c-s7395.fw

--------------------------------------------------------------------

The LG firmware can be found on the driver
disk DM04+_5.1A[LG] in BDADriver/driver

for DM04 LME2510 (LG Tuner)
---------------------------

LMEBDA_DVBS.sys (dated 13 Nov 2007)

and run
./get_dvb_firmware lme2510_lg

will produce
dvb-usb-lme2510-lg.fw


Other LG firmware can be extracted manually from US280D.sys
only found in windows/system32/driver.
However, this firmware does not run very well under Windows
or with the Linux driver.

dd if=US280D.sys ibs=1 skip=36856 count=3976 of=dvb-usb-lme2510-lg.fw

---------------------------------------------------------------------

Copy the firmware file(s) to /lib/firmware
1 change: 1 addition & 0 deletions drivers/media/IR/keymaps/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
rc-kworld-315u.o \
rc-kworld-plus-tv-analog.o \
rc-lirc.o \
rc-lme2510.o \
rc-manli.o \
rc-msi-tvanywhere.o \
rc-msi-tvanywhere-plus.o \
Expand Down
68 changes: 68 additions & 0 deletions drivers/media/IR/keymaps/rc-lme2510.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/* LME2510 remote control
*
*
* Copyright (C) 2010 Malcolm Priestley (tvboxspy@gmail.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*/

#include <media/rc-map.h>


static struct ir_scancode lme2510_rc[] = {
{ 0xba45, KEY_0 },
{ 0xa05f, KEY_1 },
{ 0xaf50, KEY_2 },
{ 0xa25d, KEY_3 },
{ 0xbe41, KEY_4 },
{ 0xf50a, KEY_5 },
{ 0xbd42, KEY_6 },
{ 0xb847, KEY_7 },
{ 0xb649, KEY_8 },
{ 0xfa05, KEY_9 },
{ 0xbc43, KEY_POWER },
{ 0xb946, KEY_SUBTITLE },
{ 0xf906, KEY_PAUSE },
{ 0xfc03, KEY_MEDIA_REPEAT},
{ 0xfd02, KEY_PAUSE },
{ 0xa15e, KEY_VOLUMEUP },
{ 0xa35c, KEY_VOLUMEDOWN },
{ 0xf609, KEY_CHANNELUP },
{ 0xe51a, KEY_CHANNELDOWN },
{ 0xe11e, KEY_PLAY },
{ 0xe41b, KEY_ZOOM },
{ 0xa659, KEY_MUTE },
{ 0xa55a, KEY_TV },
{ 0xe718, KEY_RECORD },
{ 0xf807, KEY_EPG },
{ 0xfe01, KEY_STOP },

};

static struct rc_keymap lme2510_map = {
.map = {
.scan = lme2510_rc,
.size = ARRAY_SIZE(lme2510_rc),
.ir_type = IR_TYPE_UNKNOWN,
.name = RC_MAP_LME2510,
}
};

static int __init init_rc_lme2510_map(void)
{
return ir_register_map(&lme2510_map);
}

static void __exit exit_rc_lme2510_map(void)
{
ir_unregister_map(&lme2510_map);
}

module_init(init_rc_lme2510_map)
module_exit(exit_rc_lme2510_map)

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Malcolm Priestley tvboxspy@gmail.com");
11 changes: 11 additions & 0 deletions drivers/media/dvb/dvb-usb/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -347,3 +347,14 @@ config DVB_USB_AZ6027
select DVB_STB6100 if !DVB_FE_CUSTOMISE
help
Say Y here to support the AZ6027 device

config DVB_USB_LME2510
tristate "LME DM04/QQBOX DVB-S USB2.0 support"
depends on DVB_USB
select DVB_TDA10086 if !DVB_FE_CUSTOMISE
select DVB_TDA826X if !DVB_FE_CUSTOMISE
select DVB_STV0288 if !DVB_FE_CUSTOMISE
select DVB_IX2505V if !DVB_FE_CUSTOMISE
depends on IR_CORE
help
Say Y here to support the LME DM04/QQBOX DVB-S USB2.0 .
3 changes: 3 additions & 0 deletions drivers/media/dvb/dvb-usb/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ obj-$(CONFIG_DVB_USB_EC168) += dvb-usb-ec168.o
dvb-usb-az6027-objs = az6027.o
obj-$(CONFIG_DVB_USB_AZ6027) += dvb-usb-az6027.o

dvb-usb-lmedm04-objs = lmedm04.o
obj-$(CONFIG_DVB_USB_LME2510) += dvb-usb-lmedm04.o

EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/
# due to tuner-xc3028
EXTRA_CFLAGS += -Idrivers/media/common/tuners
Expand Down
Loading

0 comments on commit d2f918b

Please sign in to comment.