Using NoN-Samsung USB WiFi dongles with TV


From SamyGO
Jump to: navigation, search

It's possible to you your WiFi dongle with Samsung TV's.

Samsung WiFi Dongles uses RaLink rt73, rt2570sta, rt2870sta chips. But their drivers in the TV doesn't include other brands ID's, thats why you cannot use other RaLink chipped USB dongles. Because TV thinks they are incompatible. So you can unload older drivers and install native drivers that we pre-compiled for you. Then your TV works with any WiFi USB dongle that uses RaLink chip compatible with rt73, rt2500, rt2870...

Now we have another hardware way that you don't needed to change anything on your TV!

But I suggest you to use alternative way to have internet connection at TV with WiFi connection.

Alternative Way

Instead of fighting with your TV and firmware, you can use some ultra mini routers to connect your TV to WiFi using TV's Ethernet port. They are cheaper than hard to find old RT dongles. Those routers could be powered from USB port of your TV and doesn't require standalone AC power slot. Also, you can use this devices as a repeater same time. I have one of them, installed OpenWRT and works flawless.

TPLink TL-WR703N

Hardware Way

This is preferred way because it's compatible with B and C series.

Samsung TV's kernel module has just Samsung VID/PID values. Because of this, even if your hardware has supported chip (like rt2870sta) does not work on Samsung TVs because driver cannot recognize that PID and VID values and can't choose driver for that device. So there is two way to make your WiFi dongle works on TV.

  • Changing your dongles PID/VID value (this requires your dongle has already supported chipset in it) or
  • Installing new drivers (kernel module) for your WiFi dongles (this requires to install some programs to TV, which is more complicated).

This hardware hack works via changing USB WiFi dongles Vendor and Product Identifier Numbers. Overriding original values to Samsung Vendor Identifier Number (0x04E8) and Samsung WIS09ABGN dongle product Identifier Number (0x2018) makes dongle recognized by TV.

All you need is a dirt cheap USB WiFi dongle that has compatible chipset (rt) and allows eeprom PID/VID changing. Than you could disguise your dongle as original Samsung dongle camouflage with some commands at linux.

Those dongles will make same job as price premium Samsung's original dongles!

Probably working modules still available at internet. All you need is rt2870 chipped USB WiFi dongle.

  • And this one at ebay.

Tested dongle models are:

  • It's reported that Edimax EW-7718Un has rt2870 chip.

!!!DWA-125 lots of errors reported please check forum!!!

  • Dlink DWA-140 UK - USA - AU (Notice: It's confirmed that HW Rev B1 recognized by C series without change. Also problem reported with HW Rev B2, looks like stick does not flash eeprom values properly.)

!!!Rev B2 flashes ok however wrong chipset will not work!!!

Before hacking/changing eeprom values, just plug that dongle into your TV. Some revisions might be working without any change.

Also you have better to save original PID/VID values to somewhere to reverting your dongles back later.

You can check dongle PID/VID numbers via using lsusb command

For hacking dongles, all you need is plug the dongle to your linux computer and issue this commands.

# iwpriv ra0 e2p 208=04E8
# iwpriv ra0 e2p 20A=2018

After you can look pid/vid values with lsusb command if they are changed or not... So your TV will think those dongles as original Samsung one because of changed PID and VID values.

Notice: Not all rt2870sta chipped dongles compatible with this hack and you could broke your dongle with this commands. At least one "Edimax-uN7711" broken with this hack...

Also keep in mind that, some USB dongles with same Model number might have different revisions and could have different chips in it or could incompatible with this hack. If you faced with one, please report us.

Compiling Custom Kernel Modules that supports e2p for Hardware Hack

e2p process might require you needed to compile new wifi from source drivers if your driver doesn't support e2p.


For Ubuntu/Debian Linux

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential linux-headers-$(uname -r) fakeroot dpkg-dev

Compiling your own driver

1. Go to http://www.ralinktech.com and download the RT2870USB(RT2870/RT2770)-Driver for Linux (site is very slow), or download a pre-modified version of the driver that WILL compile on kernels >= 2.6.35 (thanks | Mark Greaves (PCNetSpec) )

wget http://download.samygo.tv/Others/2010_0709_RT2870_Linux_STA_v2.4.0.1.tar.bz2

2. Type the following command:

tar -jxvf 2010_0709_RT2870_Linux_STA_v2.4.0.1.tar.bz2
cd 2010_0709_RT2870_Linux_STA_v2.4.0.1


3. Open /os/linux/config.mk and change (this step is not neccessary if you only want to patch the stick and do not install the driver):

# Support ATE function
HAS_ATE=y

# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=y

# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

4. Open /os/linux/usb_main_dev.c, add this code: MODULE_LICENSE("GPL"); (if it is not already there. This step is not neccessary for the driver listed above). So it should look like:

MODULE_AUTHOR("Paul Lin <paul_lin@ralinktech.com>");
MODULE_DESCRIPTION("RT2870 Wireless Lan Linux Driver");
MODULE_LICENSE("GPL");
#ifdef CONFIG_STA_SUPPORT
#ifdef MODULE_VERSION
MODULE_VERSION(STA_DRIVER_VERSION);
#endif
#endif // CONFIG_STA_SUPPORT //

5. Compiling driver:

make

Some output:

make -C tools
make[1]: Entering directory `/tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/tools'
gcc -g bin2h.c -o bin2h
make[1]: Leaving directory `/tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/tools'
/tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/tools/bin2h
cp -f os/linux/Makefile.6 /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/Makefile
make -C /lib/modules/2.6.32-24-generic-pae/build SUBDIRS=/tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-24-generic-pae'
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../common/crypt_md5.o
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../common/crypt_sha2.o
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../common/crypt_hmac.o
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../common/crypt_aes.o
...
....
..
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../common/rtusb_io.o
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../common/rtusb_bulk.o
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../common/rtusb_data.o
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../common/cmm_data_usb.o
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../common/ee_prom.o
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../common/rtmp_mcu.o
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../common/rtusb_dev_id.o
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../os/linux/rt_usb.o
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../os/linux/rt_usb_util.o
 CC [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/../../os/linux/usb_main_dev.o
 LD [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/rt2870sta.o
 Building modules, stage 2.
 MODPOST 1 modules
 CC      /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/rt2870sta.mod.o
 LD [M]  /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux/rt2870sta.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-24-generic-pae'

Note: You may see a LOTs of warnings during the compilation, and this is *normal* so don't panic.

Installation is not neccessary for patching, but after this you get your driver permanent

sudo make install

6. Insert the stick and ensure, that you unload every drivermodule that was loaded automatically. Otherwise you cannot load your custom driver

sudo rmmod rt2870sta
sudo rmmod rt2800usb
sudo rmmod rt2x00usb
sudo rmmod rt2800lib
sudo rmmod rt2x00lib
sudo rmmod [all other ralinktech modules]

Check with "lsmod | grep rt" if all ralinktech-related modules are unloaded. Maybe you must also shutdown the wlan interface (ifconfig wlan0 down) if you get a "device busy" error.

sudo rmmod [module-if-exists]

7. Load your custom driver

sudo insmod os/linux/rt3070sta.ko
# bring the interface up (this is important, otherwise iwpriv quits with an error)
sudo ifconfig ra0 up

8. Insert your wifi stick and look supported ioctl table like that

user@localhost:~# sudo iwpriv ra0
ra0       Available private ioctls :
         set              (8BE2) : set 1024 char  & get   0
         connStatus       (0004) : set 1024 char  & get 2047 char
         driverVer        (0005) : set 1024 char  & get 2047 char
         bainfo           (0006) : set 1024 char  & get 2047 char
         descinfo         (0007) : set 1024 char  & get 2047 char
         radio_off        (000A) : set 1024 char  & get 2047 char
         radio_on         (000B) : set 1024 char  & get 2047 char
         show             (0015) : set 1024 char  & get 2047 char
         adhocEntry       (0016) : set 1024 char  & get 2047 char
         bbp              (8BE3) : set 2047 char  & get 2047 char
         mac              (8BE5) : set 1024 char  & get 1024 char
         rf               (8BF3) : set 2047 char  & get 2047 char
         e2p              (8BE7) : set 1024 char  & get 1024 char
         stat             (8BE9) : set   0       & get 2047 char
         get_site_survey  (8BED) : set   0       & get 1024 char

9. Watch lsmod to current PID/VID. Take note that values

10. change VID&PID with the commands.

user@localhost:~# sudo iwpriv ra0 e2p 208=04E8
ra0       e2p:0208=0x04E8
user@localhost:~# sudo iwpriv ra0 e2p 20A=2018
ra0      e2p:020A=0x2018

11.Verify changed values

user@localhost:~# sudo iwpriv ra0 e2p 0208
ra0       e2p:
[0x0208]:0x04E8
user@localhost:~# sudo iwpriv ra0 e2p 020a
ra0       e2p:
[0x020A]:0x2018

Now the stick should be recognized by your TV

Written wrong values? Fix driver.

Smetimes it happens, the procedure goes w/o error, but you get wrong VID and PID written to dongle`s eeprom. Here is the solution.
You have to add your new values to driver, compille it and insmod. Then dongle will be recognized by system again.

1. Open ./common/rtusb_dev_id.c, locate the following section:

#ifdef RT2870
      {USB_DEVICE(0x148F,0x2770)}, /* Ralink */
      {USB_DEVICE(0x148F,0x2870)}, /* Ralink */
      {USB_DEVICE(0x07B8,0x2870)}, /* AboCom */
      ...   
      {USB_DEVICE(0x050d,0x815c)}, /* Belkin F5D8053 */
      {USB_DEVICE(0x100D,0x9031)}, /* Motorola 2770 */
      {USB_DEVICE(0x0DB0,0x6899)},
#endif // RT2870 //

2. Add a new line (before the #endif // RT2870 // line) with your new values, (replace with yours):

{USB_DEVICE(0x04E8,0x7718)},

3. Recompile driver. Try change vid&pid according howto again.

Software Way

Instructions

For B series only. Same approach will work on C series (with C series kernel modules, but except rt73 based dongles...)

  • Open Telnet/Console Connection to your TV via SamyGO Telnet Enabler if it's not already enabled by Hacked firmware or you can use console approach too.
  • Download the pre-compiled drivers from SamyGO WiFi Modules here
  • Extract and copy required ko modules to usb, then TV's internal memory like "/mtd_rwarea/modules" (or you can leave them on USB...)
md /mtd_rwarea/modules
cp /dtv/usb/sda/SamyGO/rt73.ko /mtd_rwarea/modules

Than load the modules to TV's kernel.

Basic Way

rmmod rt73                           # remove old kernel module
sleep 10                             # wait some for detection
insmod /mtd_rwarea/modules/rt73.ko   # install new module, you can also replace with rt73 or rt2570sta.ko or rt2870sta

Advanced Way

If commands at top doesn't work properly, you can try this way.

killall -QUIT udhcpc                     # stops udhcpc
ifconfig ra11n0 down                     # shut downs nw interface
rmmod rt2870sta                          # removes original module
rmmod rt73                               # removes original module 
insmod /mtd_rwarea/modules/rt2870sta.ko  # load new module, you can also replace with rt73 or rt2570sta.ko
ifconfig ra11n0 up                       # fire up nw interface
udhcpc -i ra11n0 -t 12 -T 5 -b           # start udhcpc

After your TV recognizes USB WiFi dongle that you have. You can also use another chipped WiFi dongles too. But definitely you needed to find linux drivers compatible with 2.6.17/18 and needed to compile them via Toolchain provided by SamyGO Open Embedded.

You can check output by:

#dmesg | grep rtu
<7>rtusb_disconnect: unregister_netdev(), dev->name=ra11n0!
<4><--- rtusb 2870 1.002(1.4.0.0) exit
<4>rtusb 2870 1.002(1.4.0.0) init --->
<4>rtusb 0.994 init ====>
<4><=== rtusb 0.994 exit
<7>rtusb_disconnect: unregister_netdev(), dev->name=ra11n0!
<4><--- rtusb 2870 1.002(1.4.0.0) exit
<4>rtusb 2870 1.002(1.4.0.0) init --->
<4>rtusb 0.994 init ====>
<4><=== rtusb 0.994 exit
<4>rtusb 0.994 [SamyGO] init ====>
<4><=== rtusb 0.994 [SamyGO] exit
<7>rtusb_disconnect: unregister_netdev(), dev->name=ra11n0!
<4><--- rtusb 2870 1.002(1.4.0.0) exit
<4>rtusb 2870 1.002(1.4.0.0) [SamyGO] init --->
<4>rtusb 0.994 [SamyGO] init ====>

Debugging

With creating file on dtv, triggers debug with USB connection. touch /dtv/debug_on


USB WiFi dongles that uses RaLink chip/driver

You can use any of rt73,rt2570 and rt2870 chipped dongles. Some of them could generate problems on connecting WPA/WEP protected networks.

Dongles that tested on forum

Edimax EW-7318USg
Edimax EW-7711UAN (rt2870sta)
Edimax EW-7718UN (rt2870sta)
<please fill here if your USB dongle that works with ralink driver, need specified model number>

Dongles that we insist working on this TV

Informations extracted from our compiled drirvers (this is the preferred version)

I search on internet and found this 2 lists:

uses rt2850.ko http://wiki.debian.org/rt2870sta uses rt73.ko http://wiki.debian.org/WiFi/rt73

also those that uses rt2870sta.ko:

USB: 0471:200F Philips 802.11n Wireless Adapter
USB: 04E8:2018 Samsung Electronics Co., Ltd (Device name unknown)
USB: 050D:8053 Belkin Components (Device name unknown)
USB: 050D:805C Belkin Components (Device name unknown)
USB: 0586:3416 ZyXEL Communications Corp. NWD-210N 802.11b/g/n-draft wireless adapter
USB: 0789:0162 Logitec Corp. (Device name unknown)
USB: 0789:0163 Logitec Corp. (Device name unknown)
USB: 0789:0164 Logitec Corp. (Device name unknown)
USB: 07AA:002F Corega K.K. CG-WLUSB2GNL
USB: 07AA:003C Corega K.K. (Device name unknown)
USB: 07AA:003F Corega K.K. (Device name unknown)
USB: 07B8:2770 D-Link Corp. (Device name unknown)
USB: 07B8:2870 D-Link Corp. (Device name unknown)
USB: 07B8:3070 D-Link Corp. (Device name unknown)
USB: 07B8:3071 D-Link Corp. (Device name unknown)
USB: 07D1:3C09 D-Link System DWA-140 802.11n Adapter [ralink rt2870]
USB: 07D1:3C11 D-Link System (Device name unknown)
USB: 083A:6618 Accton Technology Corp. 802.11n Wireless Adapter
USB: 083A:7522 Accton Technology Corp. 802.11N Wireless Adapter
USB: 083A:A618 Accton Technology Corp. SMC EZ Connect N Draft 11n Wireless Adapter
USB: 083A:B522 Accton Technology Corp. EZ Connect N Draft 11n Wireless USB2.0 Adapter
USB: 0B05:1731 ASUSTek Computer, Inc. ASUS 802.11n Network Adapter
USB: 0B05:1732 ASUSTek Computer, Inc. 802.11n Network Adapter
USB: 0B05:1742 ASUSTek Computer, Inc. 802.11n Network Adapter
USB: 0CDE:0022 Z-Com 802.11b/g/n Wireless Network Adapter
USB: 0CDE:0025 Z-Com (Device name unknown)
USB: 0DF6:0017 Sitecom Europe B.V. WL-182
USB: 0DF6:002B Sitecom Europe B.V. (Device name unknown)
USB: 0DF6:002C Sitecom Europe B.V. (Device name unknown)
USB: 0DF6:002D Sitecom Europe B.V. (Device name unknown)
USB: 0DF6:0039 Sitecom Europe B.V. (Device name unknown)
USB: 0DF6:003F Sitecom Europe B.V. (Device name unknown)
USB: 0E66:0001 Hawking (Device name unknown)
USB: 0E66:0003 Hawking (Device name unknown)
USB: 1044:800B Chu Yuen Enterprise Co., Ltd GN-WB30N 802.11n WLAN Card
USB: 129B:1828 CyberTAN Technology (Device name unknown)
USB: 13D3:3247 IMC Networks 802.11 n/g/b Wireless LAN Adapter
USB: 1482:3C09 (Vendor name unknown) (Device name unknown)
USB: 148F:2770 Ralink Technology, Corp. (Device name unknown)
USB: 148F:2870 Ralink Technology, Corp. (Device name unknown)
USB: 148F:3070 Ralink Technology, Corp. (Device name unknown)
USB: 14B2:3C06 Ralink Technology, Corp. (Device name unknown)
USB: 14B2:3C07 Ralink Technology, Corp. (Device name unknown)
USB: 14B2:3C09 Ralink Technology, Corp. (Device name unknown)
USB: 14B2:3C12 Ralink Technology, Corp. (Device name unknown)
USB: 14B2:3C23 Ralink Technology, Corp. (Device name unknown)
USB: 14B2:3C25 Ralink Technology, Corp. (Device name unknown)
USB: 14B2:3C27 Ralink Technology, Corp. rt2870 802.11n WLAN
USB: 14B2:3C28 Ralink Technology, Corp. (Device name unknown)
USB: 157E:300E TRENDnet (Device name unknown)
USB: 15A9:0006 (Vendor name unknown) (Device name unknown)
USB: 15C5:0008 (Vendor name unknown) (Device name unknown)
USB: 1737:0071 Linksys (Device name unknown)
USB: 1740:9701 Senao (Device name unknown)
USB: 1740:9702 Senao (Device name unknown)
USB: 18C5:0012 AMIT (Device name unknown)
USB: 2019:AB25 PLANEX (Device name unknown)
USB: 2019:ED06 PLANEX (Device name unknown)
USB: 5A57:0280 Zinwell (Device name unknown)
USB: 5A57:0282 Zinwell (Device name unknown)
USB: 7392:7711 (Vendor name unknown) (Device name unknown)
USB: 7392:7717 (Vendor name unknown) (Device name unknown)

and for rt73.ko

USB: 0411:00F4 MelCo., Inc. (Device name unknown)
USB: 050D:7050 Belkin Components F5D7050 ver 1000 WiFi
USB: 050D:705A Belkin Components F5D7050A Wireless Adapter
USB: 050D:905B Belkin Components F5D9050 ver 3 Wireless Adapter
USB: 050D:905C Belkin Components Wireless G Plus MIMO Network Adapter
USB: 06F8:E010 Guillemot Corp. HWGUSB2-54-LB
USB: 06F8:E020 Guillemot Corp. HWGUSB2-54V2-AP
USB: 0769:31F3 Surecom Technology Corp. RT2573
USB: 07AA:002E Corega K.K. (Device name unknown)
USB: 07B8:B21D D-Link Corp. RT2573
USB: 07D1:3C03 D-Link System DWL-G122 802.11g Adapter [ralink rt73]
USB: 07D1:3C04 D-Link System WUA-1340
USB: 07D1:3C06 D-Link System (Device name unknown)
USB: 07D1:3C07 D-Link System Wireless G DWA-110 Adapter
USB: 0B05:1723 ASUSTek Computer, Inc. WL-167G v2 802.11g Adapter [ralink]
USB: 0B05:1724 ASUSTek Computer, Inc. RT2573
USB: 0DB0:6874 Micro Star International RT2573
USB: 0DB0:6877 Micro Star International RT2573
USB: 0DB0:A861 Micro Star International RT2573
USB: 0DB0:A874 Micro Star International RT2573
USB: 0DF6:90AC Sitecom Europe B.V. WL-172
USB: 0DF6:9712 Sitecom Europe B.V. WL-113 rev 2
USB: 1044:8008 Chu Yuen Enterprise Co., Ltd GN-WB01GS
USB: 1044:800A Chu Yuen Enterprise Co., Ltd GN-WI05GS
USB: 1371:9022 Dick Smith Electronics RT2573
USB: 1371:9032 Dick Smith Electronics C-Net CWD-854 rev F
USB: 13B1:0020 Linksys WUSB54GC 802.11g Adapter [ralink rt73]
USB: 13B1:0023 Linksys WUSB54GR
USB: 1472:0009 Huawei-3Com Aolynk WUB320g
USB: 148F:2573 Ralink Technology, Corp. RT2501USB Wireless Adapter
USB: 148F:2671 Ralink Technology, Corp. RT2601USB Wireless Adapter
USB: 14B2:3C22 Ralink Technology, Corp. rt73 802.11g WLAN
USB: 15A9:0004 (Vendor name unknown) (Device name unknown)
USB: 1631:C019 Good Way Technology RT2573
USB: 1690:0722 Askey Computer Corp. [hex] RT2573
USB: 1740:7100 Senao (Device name unknown)
USB: 18E8:6196 Qcom RT2573
USB: 18E8:6229 Qcom RT2573
USB: 18E8:6238 Qcom (Device name unknown)
USB: 2019:AB01 PLANEX GW-US54HP
USB: 2019:AB50 PLANEX GW-US54Mini2

Forum Page

You can leave comment on this related forum. http://forum.samygo.tv/viewtopic.php?f=3&t=14