Hikari TV: Difference between revisions

From Lundman Wiki
No edit summary
No edit summary
Line 1: Line 1:
=== MeLE A2000 ===
== Hikari TV ひかりTV ==


=== Mele file storage ===
After going through the typical/annoying Japanese signup protocol of;


http://www.lundman.net/ftp/mele/
# calling, handing over name and address
# they send you a form, so that you write name and address
# so they can give you the service


I got the tuner in the mail ok, as well as the "setup number". There was also a NTT flets COP code I needed, so I called NTT to get that.


=== v1.2 firmware ===
Lots of channels, and the tuner is all in Japanese, but pretty easy to navigate. As always, it is a little sluggish when using the GUI, changing channels and so on. About the same as the satellite and cable STBs I have used before. One would hope they'd made it faster over the years though.


Mele_HTPC_120907_Ver1.2.rar
These are things I want to find an answer for:


* Hackable? Can I get in, if so, can I add English myself? only port 20000 open so far. (upnp?)
* Quick channel list. I want a fast way to get to a more scrollable channel list. Right now you either get full guide (slow) or large icons (slow), or deep in the menus (slow)
* Quick channels, can I set my preferred channels on the number keys, and quick jump? Looks like I can, but it sure don't work.
* Output is 1080i, why not 1080p.
* Can I get it to work with XBMC and remove tuner? (IPV6 etc)


=== Status ===


Current status with the Mele A2000, Allwinner A10.
== Mini review ==


Official release: Android 4 ICS, 4.0.8.
I have used the service for a little bit now. I did not really understand the difference in the two packages you sign up for;
Kernel: 3.0.31+


'''Positive:'''
* TV: This is the equivalent of SkyPerfect satellite, or cable. You get the channels, and can watch them when your program is on. EPG guides, and scheduled recording.
* Video playback 1080p
* Video: This is the OnDemand service, where you look around to find something to watch, then just watch it. Whole seasons are usually available.
* MKV playback
* TS playback
* YouTube
* Android market and Games (Angry Birds etc)


'''Negative:'''
You can also "connect" your tuner with the HikariTV web page, and view EPG guides on the computer to schedule recordings of shows, as well as, searching for shows. That is worth doing, as shifting through guides, on the tuner itself, is slow and tedious.
* <s>Network Streaming</s> Fixed. NIC has been patched to allow smooth 1080p steaming
* Audio. The settings; '''CODEC''' no sound, but probably on RCA. '''HDMI''' choppy sound, unusable. If made to work, only '''stereo''' on HDMI. '''SPDIF''' not working, does not turn on. (No red light)
* Bitstreaming; Unconfirmed since SPDIF is not functional. But can the hardware bitstream TrueHD, and DTS-MA ?
* 10bit video does not play (not supported by hardware, CPU too slow for software)
* AVI/XviD does not play (not supported by hardware, CPU too slow for software)


Currently, it is no good for mediaplayer. But if all you want is a toy to play youtube, some android games, and only stereo sound, it is definitely capable.
Some shows will not have English. This is very strange. For example, BBC's "Sherlock" Season 1 has both subbed and dubbed. But the Season 2 one-week special only had dubbed version. It is really a crime to do that.


For some reason, Comedy shows appear completely absent from the Video service. One would expect at least something like Friends, My Name is Earl, Community, Big Bang Theory, Scrubs, The Office. And I don't mean *specifically* those shows, but any 30mins comedy shows just does not exist.


=== Android 4 ICS wired NIC patch ===
Everything TV is sorted under Drama. Be it Bones, CSI, Fringe, 24, Dexter... All Drama. I guess since there is no Comedy genre.


I have been working on trying to improve the '''wemac''' NIC driver in the Mele A2000 Allwinner A10 hardware, which will stutter when playing 720p/1080p over network. The current patch makes it much better, such that I think it is usable now. There is a '''mynewerimage.img''' image in the storage area, that you can '''dd''' to the '''nandc''' device. I will work on submitting the patch upstream.
I have no issues with it being over my Internet connection. But I do tend to turn off the tuner when I am not watching tv, as I am aware it is using the network.


For example, if you boot miniand image:


# modprobe nand    # nand.ko on my storage area too
I am happy to stay with this service for the time being. However, I will be looking for a better STB. If something faster (CPU), or in English, or even XBMC support, becomes available it will be worth exploring.
# wget http://lundman.net/ftp/mele/mynewerimage.img
# dd if=/dev/nandc of=mele_nandc_backup.bin bs=65536
# dd if=mynewerimage.img of=/dev/nandc bs=65536
# sync
# reboot -f


And take out the SD card to boot Android again. If you do this using Android, the device node is /dev/block/nandc


=== Android 4 ICS official Mele image ===


The official Mele Android ICS image is out, called '''Mele_HTPC_Android_4.0_V1.rar''' which you need to use PhoenixCard to "burn". Once installed, you can use '''audiopatch1.3.apk''' to enable some sound features. Otherwise it seems quite similar to A10 firmware.


For those not using Windows, I also made a '''dd''' image: '''Mele_HTPC_Android_4.0_V1.ddimg.bin.bz2''' [http://lundman.net/ftp/mele/Mele_HTPC_Android_4.0_V1.ddimg.bin.bz2] Just dd the whole thing to your raw device.


=== Android 4 IceCreamSandwich ===


'''Update: the non-beta release of ICS4 came out (for the A10, not Mele's release), which has settings/display, and lets you chose resolution '''


For Unix and clones:
wget http://www.lundman.net/ftp/mele/homlet_4.0_v1.0_20120609_dd.img.lzma
7z x homlet_4.0_v1.0_20120609_dd.img.lzma
sudo dd if=homlet_4.0_v1.0_20120609_dd.img of=/dev/sdX bs=1M
sync


Where you need to replace X in /dev/sdX by the correct letter for your SD card reader.
=== Networking ===
Now insert the SD card in your Mele, and wait until the LED stops blinking, remove the SD card and restart the device. Et voila!
(Read more: [http://www.cnx-software.com/2012/06/18/mele-a1000a2000-android-4-0-image-released/#ixzz1ylfoeKQc]) See I kept the paste URL cos I'm nice! :)


I had a fair bit of trouble getting HikariTV to work well. It would sometimes start glitching like crazy, I thought it was the wifi router, or maybe the two switches connected in chain.


But eventually it turns out the be the Win7 PC going into hibernation (sleep). The switch appears to think it still should get multicast packets (wake on lan is on) and something goes weird there. Shutdown has no side effects.


There is also an audiopatch for the ICS4 image to get sound to work. Copy over '''audiopatch1.2.apk''' (adb, or physical media) to your ICS4, install and run.


Not convinced it makes any difference for me. Audio appears not to work still.


It appears the contents on audiopatch1.2 is pretty much just libswa.so. Not entirely sure what it thinks to do with it, but if I do a '''find''' from root, there is no such library, before and after running patch.


I copied the file by hand:
=== NEC Aterm WR9500N ===


busybox cp /data/data/com.android.audiopatch/files/libswa.so /system/lib/
I picked up an Aterm WR9500N Wifi router. Fairly easy to setup, defaults were all good. Testing HikariTV with this router now.


and I get sound playing videos with some audio formats now. Like, TV MKV releases.


=== Mele A2000 ===


I purchased a MeLE A2000 from Tom over at [http://www.aliexpress.com/product-fm/546571245-Mele-A2000-TV-box-Allwinner-A10-hackable-device-wholesalers.html aliexpress], and been playing around with it as well. First I wanted to install ICS4, to do that I downloaded the '''android_4.0.img''' file from the 'net. Alas, there is a large volume of confusing information on what to do with this.
=== Buffalo ===


[http://www.lundman.net/ftp/mele/ http://www.lundman.net/ftp/mele/]
I signed up for HikariTV recently, to see what that is like to use. I went for the "double" tuner rental.
[https://www.wuala.com/zercosz/Mele%20A2000/Firmware/?key=ThisIsFC2012 https://www.wuala.com/zercosz/Mele%20A2000/Firmware/?key=ThisIsFC2012]


For the MeLE A2000, I also downloaded '''PhoenixCardV303(win7)''' and installed that in my VirtualBox Win7 system, forwarded the OSX USB drive and told it to install '''android_4.0.img'''.
Initially I was using an old Buffalo G54 wifi router. It could technically handle it, but all wifi communication stopped when watching tv.


[https://www.wuala.com/zercosz/Mele%20A2000/Utilidades%20Mele/?key=ThisIsFC2012 https://www.wuala.com/zercosz/Mele%20A2000/Utilidades%20Mele/?key=ThisIsFC2012]
I went and picked up a WZR-450HP. You have to enable the "Movie engine" and then IPV6 option. Then HikariTV worked.
[http://www.lundman.net/ftp/mele/ http://www.lundman.net/ftp/mele/]


After that, I inserted the SD card into Mele, and rebooted.
However, I noticed you could only watch for 2-3 minutes, then channels would go blocky, corrupt and generally be unplayable. Some channels did not play at all.


The power LED will blink RED + BLUE for a while, then power LED will turn off.
It turns out that you can set the "multicast rate", for which the default is "11 mbps", on the Buffalo WIFI router.


Take out SDcard, and reboot MeLE. It will now boot ICS, but only on HDMI@720p.
However, with HD channels, it is sending at about 8-16mbps. I changed the "multicast rate" to 22mbps and it is currently working well.


I can confirm BubbleUPNP + 2160pPlayer will play 1080p MKVs over network. Nice!


=== Reverse Engineering ===


=== Google Market/Play ===
I contacted HikariTV to see if I am allowed to write my own client to play HikariTV, as I think it can be done better than current STB. They replied that they had no OpenSource information at the moment. We know the STB runs Linux/2.6.20.19-ce3tsb-20091202, so it must exist somewhere.


I installed one of the Terminal programs, and told adb to use TCP (haven't bothered to open my mele yet). Using adb and the instructions found [http://www.slatedroid.com/topic/30855-scripts-allwinner-a10-tablets-google-play-script/ allwinner a10 scripts] I loaded Google Market/Play to the mele.
Unless NEC is breaking GNU license.


Anyway, this is what the bootup process appears to do:
The STB is 192.168.0.5
Router is 192.168.0.1


20:53:04.315831 IP6 fe80::216:97ff:fe95:8e35 > ff02::16: HBH ICMP6, multicast listener report v2, 1 group record(s), length 28
20:53:05.657104 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:16:97:95:8e:35, length 300
20:53:06.179867 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:16:97:95:8e:35, length 548
20:53:06.352013 IP6 fe80::216:97ff:fe95:8e35 > ff02::2: ICMP6, router solicitation, length 16
20:53:06.702548 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:16:97:95:8e:35, length 548
20:53:07.056167 IP6 :: > ff02::1:ff95:8e35: ICMP6, neighbor solicitation, who has 2001:c90:8205:d578:216:97ff:fe95:8e35, length 24
20:53:07.478168 IP 192.0.123.254 > 224.0.0.22: igmp v3 report, 1 group record(s)
20:53:07.494903 IP 192.168.0.5.32771 > 239.255.255.250.1900: UDP, length 128
20:53:07.598341 IP 192.168.0.5.32771 > 239.255.255.250.1900: UDP, length 128 M-SEARCH schemas-upnp-org:device:MediaServer:1.
20:53:07.952127 IP 192.0.123.254 > 224.0.0.22: igmp v3 report, 1 group record(s)


=== Changing resolution ===
[whole section of the STB connecting to my UPNP MediaServers ]


This refers to the Beta ICS4. Probably is not useful any more, but I will leave it here for reference.
20:53:17.602871 IP6 fe80::216:97ff:fe95:8e35.546 > ff02::1:2.547: dhcp6 inf-req
20:53:17.611364 IP6 fe80::207:7dff:feac:f5c6.547 > fe80::216:97ff:fe95:8e35.546: dhcp6 reply


Changing resolution can be done by modifying the boot time scripts that the A10 uses. Usually done on a separate boot partition. For example, the Mele image has the files:
20:53:18.300043 IP6 2001:c90:8205:d578:216:97ff:fe95:8e35.32772 > 2001:c90:0:5::1.53: 18087+ AAAA? cdn.iptvf.jp. (30)
20:53:18.331268 IP6 2001:c90:0:5::1.53 > 2001:c90:8205:d578:216:97ff:fe95:8e35.32772: 18087 1/7/13 AAAA 2001:c90:ff:200::2 (454)
20:53:18.401223 IP6 2001:c90:8205:d578:216:97ff:fe95:8e35.42115 > 2001:c90:ff:200::2.80: Flags [S], seq 2269209492, win 5760, options [mss 1440,sackOK,TS val 4294689247 ecr 0,nop,wscale 3], length 0
20:53:18.407219 IP6 2001:c90:ff:200::2.80 > 2001:c90:8205:d578:216:97ff:fe95:8e35.42115: Flags [S.], seq 1769509420, ack 2269209493, win 4320, options [mss 1440,nop,wscale 0,nop,nop,TS val 4291528675 ecr 4294689247,sackOK,eol], length 0
20:53:18.407476 IP6 2001:c90:8205:d578:216:97ff:fe95:8e35.42115 > 2001:c90:ff:200::2.80: Flags [.], ack 1, win 720, options [nop,nop,TS val 4294689254 ecr 4291528675], length 0
20:53:18.448949 IP6 2001:c90:8205:d578:216:97ff:fe95:8e35.42115 > 2001:c90:ff:200::2.80: Flags [P.], seq 1:113, ack 1, win 720, options [nop,nop,TS val 4294689295 ecr 4291528675], length 112
GET /cdn.comp HTTP/1.1
Host: cdn.iptvf.jp
User-Agent: IptvSvcClient/1.2 (00004C;IS1050;02;04;001697958E35)


  mount /dev/mmcblk0p1 /mnt
  20:53:18.457439 IP6 2001:c90:ff:200::2.80 > 2001:c90:8205:d578:216:97ff:fe95:8e35.42115: Flags [P.], seq 1:1105, ack 113, win 4432, options [nop,nop,TS val 4291528724 ecr 4294689295], length 1104
ls -l /mnt/
  HTTP/1.1 200 OK
evb.bin
  Date: Wed, 12 Sep 2012 11:53:18 GMT
 
  Server: Apache
git clone https://github.com/amery/sunxi-tools
  Last-Modified: Wed, 25 Jul 2012 01:53:46 GMT
cd sunxi-tools
  ETag: "11a0023-36a-bfd83e80"
make
  Accept-Ranges: bytes
./bin2fex /mnt/evb.bin > evb.fex   
  Content-Length: 874
 
  Content-Type: text/xml; charset=utf-8
Edit the file any odd way you want, changing '''screen0_output_type''' and '''screen0_output_mode'''. See modes here: [https://github.com/amery/linux-allwinner/blob/allwinner-v3.0-android-v2/include/linux/drv_display_sun4i.h#L132]
  <?xml version="1.0" encoding="UTF-8"?>
 
  <cdn_main>
./fex2bin evb.fex > /mnt/evb.bin
  <header>
 
  <cdn_serial>2012072500</cdn_serial>
 
  </header>
If you are running the Android 4 (ICS) Beta that was released, to change the resolution to HDMI 1080p, you can do this. Using either a terminal program on Android (ConnectionBot for example) or the USB Console (if connected).
  <cdn_name>NttEastFlets</cdn_name>
 
  <switch_control_flag>0</switch_control_flag>
On the mele root shell
  <sntp>
setprop service.adb.tcp.port 5555
  <sntp_server>ntp.flets.net</sntp_server>
stop adbd
  <time_polarity>1</time_polarity>
start adbd
  <time_delay>0900</time_delay>
netstat -na      # Check that it is listening on port 5555
  </sntp>
 
  <platform_list>
On remote adb machine
  <platform>
adb connect 192.168.xxx.xxx    # Put in the Mele's IP
  <network_id>7780</network_id>
adb shell
  <platform_name>
adb> mount -t vfat /dev/block/nanda /mnt/obb
  </platform_name>
adb> exit
  <pf_url>http://www.plala.iptvf.jp/fdn-e/</pf_url>
adb push script-HDMI-1080p60.bin /mnt/obb/
  <pf_serial>2012072500</pf_serial>
adb shell
  </platform>
adb> cd /mnt/obb
  </platform_list>
adb> busybox cp script-HDMI-1080p60.bin script.bin
  <bs_ip_broadcaster_list>
 
  <bs_ip_broadcaster>
If you don't want to edit the script file yourself, you can download my prepared one:
  <bs_ip_broadcaster_name>BS_IP</bs_ip_broadcaster_name>
[http://www.lundman.net/ftp/mele/script-HDMI-1080p60.bin script-HDMI-1080p60.bin]
  <bs_ip_broadcaster_url>http://www.plala.iptvf.jp/fdn-e/bs/</bs_ip_broadcaster_url>
 
  <bs_ip_broadcaster_serial>2010092100</bs_ip_broadcaster_serial>
=== U-boot ===
  </bs_ip_broadcaster>
 
  </bs_ip_broadcaster_list>
Since I added ZFS to u-boot for CuBox, and also patched in Samsungs EXT4 patches, I built hno's u-boot to test.
  </cdn_main>
 
  https://github.com/lundman/uboot-allwinner/tree/zfs
 
  wget http://lundman.net/ftp/mele/sunxi-spl.bin
dd if=sunxi-spl.bin of=/dev/sdc bs=1024 seek=8        # Obviously, '''sdc''' is my SDcard, change device to applicable.
   
wget http://lundman.net/ftp/mele/u-boot.bin
  dd if=u-boot.bin of=/dev/sdc bs=1024 seek=32          # Obviously, '''sdc''' is my SDcard, change device to applicable.
 
U-Boot 2012.04.01-g39085db-dirty (May 29 2012 - 02:29:31) Allwinner Technology
   
CPU:   SUNXI Family
  Board: A10-EVB
DRAM: 512 MiB
  MMC:  SUNXI SD/MMC: 0
  *** Warning - bad CRC, using default environment
sun4i#zfsload
zfsload - load binary file from a ZFS filesystem
 
sun4i#zfsload mmc 0:2 0x48000000 /boot/@/uImage
  Loading file "/boot/@/uImage" from mmc device 0:2 xxa2
zfs fsname = '/boot/' snapname='<NULL>' filename = '/uImage'
4230340 bytes read
sun4i#bootm 0x48000000
## Booting kernel from Legacy Image at 48000000 ...
  Image Name:  Linux-3.0.8+
  Image Type:  ARM Linux Kernel Image (uncompressed)
  Data Size:    4230276 Bytes = 4 MiB
  Load Address: 40008000
  Entry Point: 40008000
  Verifying Checksum ... OK
  Loading Kernel Image ... OK
  OK
   
  Starting kernel ...
   
  DRAM: 512[    0.000000] Initializing cgroup subsys cpuset
 
 
=== Android Kernel ===
 
I wanted to replace the ICS4 kernel with my own, for the nic fixes. These are the steps I took:
 
  git clone https://github.com/amery/linux-allwinner
  git branch lichee-3.0.8-sun4i
make sun4i_crane_defconfig
Check that .config has
CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
 
The wemac nic was panicing on boot everytime, until I changed this:
 
drivers/net/sun4i/sun4i_wemac.c
  #define PHY_POWER 0  /* was 1 */
 
  make uImage
 
From android, I used ConnectBot to make a copy of the 'boot' partition, nandc.
 
adb shell
adb> dd if=/dev/block/nandc of=/mnt/sdcard/nandc bs=65536
  adb pull /mnt/sdcard/nandc
 
Then split it up into kernel and ramfs, you can find split_bootimg.pl my storage area (url above)
 
  # ./split_bootimg.pl nandc
  Page size: 2048 (0x00000800)
  Kernel size: 8410564 (0x008055c4)
Ramdisk size: 975609 (0x000ee2f9)
Second size: 0 (0x00000000)
Board name:
Command line:
Writing nandc-kernel ... complete.
Writing nandc-ramdisk.gz ... complete.
 
The idea is to make a new kernel, that looks roughly the same as nandc-kernel, and re-use the nandc-ramdisk.gz
 
Once the compile has finished, we make a new image. According to the nandc ANDROID! header, the base address for Mele is 0x40000000
 
# mkbootimg --base 40000000 --kernel arch/arm/boot/Image --ramdisk ../nandc-ramdisk.gz -o ../mynewimage.img
 
Now I boot into Miniand image on SD card, use my nand.ko to load the device for /dev/nand*. You can find my Miniand kernel '''uImage''' and '''nand.ko''' in the storage area too. The default Miniand kernel did not come with nand driver.
 
  # modprobe nand.ko
  # dd if=mynewimage.img of=/dev/nandc bs=2048
  # sync
# reboot
 
and remove the SD card to boot Android. If you want to undo, and go back to ICS4, put '''nandc''' file instead of '''mynewimage.img''' in the '''dd''' line above.
 
=== Mele's Wired Network Interface ===
 
The wired nic in the Mele is a '''wemac''' from Davidcom. It is unfortunately quite poor. You will get decent 100MB speeds from it, but it uses the CPU. If you do any transfers while trying to watch video (including watching video over network) it will stutter for 1080p. Interestingly if you use SD, or USB while watching, it has no problem.
 
The WIFI driver sits on the USB bus and is not affected by this.
 
Using a USBEthernet dongle (I tried an Apple brand) also works without issues.
 
 
=== ZFS on Android ===
 
I have already ported ZFS to ARM, so that should just work if you compile ZFS with your kernel. But I also wanted to see if I can get ZFS to work with Android. The modules do load ok, but execution does not work:
 
# cd /mnt/sdcard/
# insmod spl.ko && insmod zavl.ko&&insmod znvpair.ko&&insmod zunicode.ko&&insmod zcommon.ko&&insmod zfs.ko&&insmod zpios.ko&&cp zpool /mnt/obb/&&chmod 755 /mnt/obb/zpool
  # cd /mnt/obb
  # strace -f ./zpool create melepool /dev/block/sda1   
  open("/dev/block/sda1", O_WRONLY|O_EXCL|O_LARGEFILE) = 6
  write(6, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096
  fdatasync(6)                            = 0
  close(6)                                = 0
  open("/melepool", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = -1 ENOENT (No such file or directory)
ioctl(3, ITE_GPIO_IN
 
and it hangs.
 
 
=== djmount for Android ===
 
So one option is to have a mediaplayer with UPNP ability, like that of BubbleUPNP or PlugPlayer. However, both of these do poorly with Mele's remote control. With Bubble you can not click on Directories to enter them, but have to Mouse-Mode in/out to do so.  
 
So one option is to mount all UPNP devices as a directory. Since Mele's kernel already comes with FUSE, I compiled '''djmount''' for it (patched version with >2GB size fixed).
 
% adb push djmount /mnt/obb
% adb shell
# cd /mnt/obb
# chmod 755 djmount
# ./djmount  -o allow_other /mnt/sdcard/Pictures                # No reason to pick "Pictures" I just wanted an existing directory
  # ls -l Pictures/                                
  -r--r--r-- root    root          49 2000-01-01 20:00 devices
dr-xr-xr-x root    root              2000-01-01 20:00 llink-daemon UPNP Media Server (MediaServer) : 1
# ls -l Pictures/llink-daemon\ UPNP\ Media\ Server\ \ \(MediaServer\)\ \:\ 1/
  dr-xr-xr-x root    root              2000-01-01 20:00 DVD
dr-xr-xr-x root    root              2000-01-01 20:00 Game of Thrones
dr-xr-xr-x root    root              2000-01-01 20:00 Music
dr-xr-xr-x root    root              2000-01-01 20:00 Video
-r--r--r-- root    root    14010368 2000-01-01 20:00 movie.m4v
 
And indeed, if you use the File browser in ICS4, you can just enter that directory, and play any video. Note that '''djmount''' is pretty slow on listing directories, and I think we might want to look at speeding that up if we are to use it long term. Also, increase the cache timeout from 60s to something much higher, like 10 minutes.
 
 
 
=== PS3EYE WebCam ===
 
I wanted to see if the PS3 Eye would work with Mele, and Skype.
 
Video:
 
# insmod gspca_main.ko                               
# insmod gspca_ov534.ko videomode=13     
 
That makes the camera work with Skype and '''Zoom Camera''' app. When I tried one of the 640x480 modes it just hangs, so currently it is 320x240@60.
 
Audio:
 
No idea. The device shows:
 
# cat /proc/asound/cards                             
  0 [sun4icodec    ]: sun4i-CODEC - sun4i-CODEC
                      sun4i-CODEC  Audio Codec
1 [sun4isndhdmi  ]:  - sun4i-sndhdmi
                      sun4i-sndhdmi
2 [CameraB409241  ]: USB-Audio - USB Camera-B4.09.24.1
                      OmniVision Technologies, Inc. USB Camera-B4.09.24.1 at usb-sw-ehci-1.3, high sp
3 [sun4isndspdif  ]:  - sun4i-sndspdif
                      sun4i-sndspdif
 
And we get the device nodes:
 
# ls -l /dev/snd/
crw-rw---- system  audio    116,  0 2012-07-03 14:12 controlC0
crw-rw---- system  audio    116,  32 2012-07-03 14:12 controlC1
crw-rw---- system  audio    116,  64 2012-07-03 14:12 controlC2
crw-rw---- system  audio    116,  96 2012-07-03 14:12 controlC3
crwxrwxrwx system  system  116,  24 2012-07-03 14:12 pcmC0D0c
crwxrwxrwx system  system  116,  16 2012-07-03 14:12 pcmC0D0p
crw-rw---- system  audio    116,  48 2012-07-03 14:12 pcmC1D0p
crw-rw---- system  audio    116,  88 2012-07-03 14:12 pcmC2D0c
crw-rw---- system  audio    116, 112 2012-07-03 14:12 pcmC3D0p
crw-rw---- system  audio    116,  33 2012-07-03 14:12 timer
 
But no idea how to tell Android to use the USB device as the main microphone.
 
# setprop usb.audio.cap.device pcmC0D0c
# setprop media.audio.in.mode usb
 
Neither of those work.

Revision as of 12:43, 12 September 2012

Hikari TV ひかりTV

After going through the typical/annoying Japanese signup protocol of;

  1. calling, handing over name and address
  2. they send you a form, so that you write name and address
  3. so they can give you the service

I got the tuner in the mail ok, as well as the "setup number". There was also a NTT flets COP code I needed, so I called NTT to get that.

Lots of channels, and the tuner is all in Japanese, but pretty easy to navigate. As always, it is a little sluggish when using the GUI, changing channels and so on. About the same as the satellite and cable STBs I have used before. One would hope they'd made it faster over the years though.

These are things I want to find an answer for:

  • Hackable? Can I get in, if so, can I add English myself? only port 20000 open so far. (upnp?)
  • Quick channel list. I want a fast way to get to a more scrollable channel list. Right now you either get full guide (slow) or large icons (slow), or deep in the menus (slow)
  • Quick channels, can I set my preferred channels on the number keys, and quick jump? Looks like I can, but it sure don't work.
  • Output is 1080i, why not 1080p.
  • Can I get it to work with XBMC and remove tuner? (IPV6 etc)


Mini review

I have used the service for a little bit now. I did not really understand the difference in the two packages you sign up for;

  • TV: This is the equivalent of SkyPerfect satellite, or cable. You get the channels, and can watch them when your program is on. EPG guides, and scheduled recording.
  • Video: This is the OnDemand service, where you look around to find something to watch, then just watch it. Whole seasons are usually available.

You can also "connect" your tuner with the HikariTV web page, and view EPG guides on the computer to schedule recordings of shows, as well as, searching for shows. That is worth doing, as shifting through guides, on the tuner itself, is slow and tedious.

Some shows will not have English. This is very strange. For example, BBC's "Sherlock" Season 1 has both subbed and dubbed. But the Season 2 one-week special only had dubbed version. It is really a crime to do that.

For some reason, Comedy shows appear completely absent from the Video service. One would expect at least something like Friends, My Name is Earl, Community, Big Bang Theory, Scrubs, The Office. And I don't mean *specifically* those shows, but any 30mins comedy shows just does not exist.

Everything TV is sorted under Drama. Be it Bones, CSI, Fringe, 24, Dexter... All Drama. I guess since there is no Comedy genre.

I have no issues with it being over my Internet connection. But I do tend to turn off the tuner when I am not watching tv, as I am aware it is using the network.


I am happy to stay with this service for the time being. However, I will be looking for a better STB. If something faster (CPU), or in English, or even XBMC support, becomes available it will be worth exploring.





Networking

I had a fair bit of trouble getting HikariTV to work well. It would sometimes start glitching like crazy, I thought it was the wifi router, or maybe the two switches connected in chain.

But eventually it turns out the be the Win7 PC going into hibernation (sleep). The switch appears to think it still should get multicast packets (wake on lan is on) and something goes weird there. Shutdown has no side effects.



NEC Aterm WR9500N

I picked up an Aterm WR9500N Wifi router. Fairly easy to setup, defaults were all good. Testing HikariTV with this router now.


Buffalo

I signed up for HikariTV recently, to see what that is like to use. I went for the "double" tuner rental.

Initially I was using an old Buffalo G54 wifi router. It could technically handle it, but all wifi communication stopped when watching tv.

I went and picked up a WZR-450HP. You have to enable the "Movie engine" and then IPV6 option. Then HikariTV worked.

However, I noticed you could only watch for 2-3 minutes, then channels would go blocky, corrupt and generally be unplayable. Some channels did not play at all.

It turns out that you can set the "multicast rate", for which the default is "11 mbps", on the Buffalo WIFI router.

However, with HD channels, it is sending at about 8-16mbps. I changed the "multicast rate" to 22mbps and it is currently working well.


Reverse Engineering

I contacted HikariTV to see if I am allowed to write my own client to play HikariTV, as I think it can be done better than current STB. They replied that they had no OpenSource information at the moment. We know the STB runs Linux/2.6.20.19-ce3tsb-20091202, so it must exist somewhere.

Unless NEC is breaking GNU license.

Anyway, this is what the bootup process appears to do: The STB is 192.168.0.5 Router is 192.168.0.1

20:53:04.315831 IP6 fe80::216:97ff:fe95:8e35 > ff02::16: HBH ICMP6, multicast listener report v2, 1 group record(s), length 28
20:53:05.657104 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:16:97:95:8e:35, length 300
20:53:06.179867 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:16:97:95:8e:35, length 548
20:53:06.352013 IP6 fe80::216:97ff:fe95:8e35 > ff02::2: ICMP6, router solicitation, length 16
20:53:06.702548 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:16:97:95:8e:35, length 548
20:53:07.056167 IP6 :: > ff02::1:ff95:8e35: ICMP6, neighbor solicitation, who has 2001:c90:8205:d578:216:97ff:fe95:8e35, length 24
20:53:07.478168 IP 192.0.123.254 > 224.0.0.22: igmp v3 report, 1 group record(s)
20:53:07.494903 IP 192.168.0.5.32771 > 239.255.255.250.1900: UDP, length 128
20:53:07.598341 IP 192.168.0.5.32771 > 239.255.255.250.1900: UDP, length 128 M-SEARCH schemas-upnp-org:device:MediaServer:1.
20:53:07.952127 IP 192.0.123.254 > 224.0.0.22: igmp v3 report, 1 group record(s)
[whole section of the STB connecting to my UPNP MediaServers ]
20:53:17.602871 IP6 fe80::216:97ff:fe95:8e35.546 > ff02::1:2.547: dhcp6 inf-req
20:53:17.611364 IP6 fe80::207:7dff:feac:f5c6.547 > fe80::216:97ff:fe95:8e35.546: dhcp6 reply
20:53:18.300043 IP6 2001:c90:8205:d578:216:97ff:fe95:8e35.32772 > 2001:c90:0:5::1.53: 18087+ AAAA? cdn.iptvf.jp. (30)
20:53:18.331268 IP6 2001:c90:0:5::1.53 > 2001:c90:8205:d578:216:97ff:fe95:8e35.32772: 18087 1/7/13 AAAA 2001:c90:ff:200::2 (454)
20:53:18.401223 IP6 2001:c90:8205:d578:216:97ff:fe95:8e35.42115 > 2001:c90:ff:200::2.80: Flags [S], seq 2269209492, win 5760, options [mss 1440,sackOK,TS val 4294689247 ecr 0,nop,wscale 3], length 0
20:53:18.407219 IP6 2001:c90:ff:200::2.80 > 2001:c90:8205:d578:216:97ff:fe95:8e35.42115: Flags [S.], seq 1769509420, ack 2269209493, win 4320, options [mss 1440,nop,wscale 0,nop,nop,TS val 4291528675 ecr 4294689247,sackOK,eol], length 0
20:53:18.407476 IP6 2001:c90:8205:d578:216:97ff:fe95:8e35.42115 > 2001:c90:ff:200::2.80: Flags [.], ack 1, win 720, options [nop,nop,TS val 4294689254 ecr 4291528675], length 0
20:53:18.448949 IP6 2001:c90:8205:d578:216:97ff:fe95:8e35.42115 > 2001:c90:ff:200::2.80: Flags [P.], seq 1:113, ack 1, win 720, options [nop,nop,TS val 4294689295 ecr 4291528675], length 112
GET /cdn.comp HTTP/1.1
Host: cdn.iptvf.jp
User-Agent: IptvSvcClient/1.2 (00004C;IS1050;02;04;001697958E35)
20:53:18.457439 IP6 2001:c90:ff:200::2.80 > 2001:c90:8205:d578:216:97ff:fe95:8e35.42115: Flags [P.], seq 1:1105, ack 113, win 4432, options [nop,nop,TS val 4291528724 ecr 4294689295], length 1104
HTTP/1.1 200 OK
Date: Wed, 12 Sep 2012 11:53:18 GMT
Server: Apache
Last-Modified: Wed, 25 Jul 2012 01:53:46 GMT
ETag: "11a0023-36a-bfd83e80"
Accept-Ranges: bytes
Content-Length: 874
Content-Type: text/xml; charset=utf-8
<?xml version="1.0" encoding="UTF-8"?>
<cdn_main>
<header>
<cdn_serial>2012072500</cdn_serial>
</header>
<cdn_name>NttEastFlets</cdn_name>
<switch_control_flag>0</switch_control_flag>
<sntp>
<sntp_server>ntp.flets.net</sntp_server>
<time_polarity>1</time_polarity>
<time_delay>0900</time_delay>
</sntp>
<platform_list>
<platform>
<network_id>7780</network_id>
<platform_name>
</platform_name>
<pf_url>http://www.plala.iptvf.jp/fdn-e/</pf_url>
<pf_serial>2012072500</pf_serial>
</platform>
</platform_list>
<bs_ip_broadcaster_list>
<bs_ip_broadcaster>
<bs_ip_broadcaster_name>BS_IP</bs_ip_broadcaster_name>
<bs_ip_broadcaster_url>http://www.plala.iptvf.jp/fdn-e/bs/</bs_ip_broadcaster_url>
<bs_ip_broadcaster_serial>2010092100</bs_ip_broadcaster_serial>
</bs_ip_broadcaster>
</bs_ip_broadcaster_list>
</cdn_main>