So-net無料ブログ作成
Raspberry Pi ブログトップ

Raspberry Pi (raspbian) + Planex GW-450D [Raspberry Pi]

 Raspberry Pi のNICだけが逝ってしまったのでその代替として11acの無線LAN子機「GW-450D」を導入した。ドライバ導入はメーカ(プラネックス)記事、
 ・「Raspberry Piで11ac無線LAN子機『GW-450D』を使うための設定方法」
を参考にしたが、当然、カーネルバージョンが上がっているので少し手順追加・変更が必要であった。
 まずインストール済みRaspbianのカーネルバージョンは、
$ uname -r
3.18.7+
だったが、この場合先人によればGCCのバージョンアップが必要とのことなので、その方の記事を参考にここではGCCバージョンアップのみを実施。
 ・GW-450DやWN-AC433UKをRaspberry Piで使う
 ちなみに手元の環境のGCCバージョンは
$ gcc -v
・・・・・・
gcc version 4.8.3 (Raspbian 4.8.3-13)
へ上がっていた。
 次にファームウェアを最新版へアップデート。これはGW-450Dドライバのビルド環境を作成する際に取得するカーネルソースバージョンも最新版となるので、これらを同一にするのが目的。
$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get install make bc ncurses-dev
$ sudo rpi-update
$ sudo reboot
ちなみに手元の環境で確認すると、
$ uname -r
3.18.8+
がこの時点の最新カーネルバージョンだった。
次にこれに対応した最新版カーネルソースを取得しGW-450Dドライバのビルド環境を作成。
$ sudo su
# cd /usr/src
# wget https://github.com/raspberrypi/linux/archive/rpi-3.18.y.tar.gz
# tar xvfz rpi-3.18.y.tar.gz
# head -5 linux-rpi-3.18.y/Makefile
VERSION = 3
PATCHLEVEL = 18
SUBLEVEL = 8
EXTRAVERSION =
NAME = Diseased Newt
# ln -s /usr/src/linux-rpi-3.18.y/ /lib/modules/`uname -r`/build
# cd /lib/modules/`uname -r`/build
# make mrproper
# zcat /proc/config.gz > .config
# make modules_prepare
# wget https://github.com/raspberrypi/firmware/raw/master/extra/Module.symvers
<3/9追記>
Raspberry Pi 2の場合は上記最終行が以下になる
# wget https://github.com/raspberrypi/firmware/raw/master/extra/Module7.symvers -O Module.symvers
 いよいよ「GW-450D」ドライバのコンパイルであるが、このままでは途中エラーが発生してコンパイルできなかった。いろいろとググってみて、
https://bitbucket.org/sanrath/mediatek_mt7610u_sta_driver_linux-64bit/commits/a989fcd6e073205690434e99ac1dc2b0f837350b
の修正をあてることで、何とかコンパイルすることができた。以下はこれにVendorID、ProductIDなどの変更を追加したパッチファイルになる。
$ cat mediatek_mt7610u_sta_driver_for_3.18.8.patch
diff -urN a/RT2870STA.dat b/RT2870STA.dat
--- a/RT2870STA.dat	2013-09-16 23:03:08.000000000 +0900
+++ b/RT2870STA.dat	2015-03-07 15:15:54.696136992 +0900
@@ -6,7 +6,7 @@
 ChannelGeography=1
 SSID=11n-AP
 NetworkType=Infra
-WirelessMode=5
+WirelessMode=8
 EfuseBufferMode=0
 Channel=0
 BeaconPeriod=100
@@ -17,7 +17,7 @@
 FragThreshold=2346
 TxBurst=1
 PktAggregate=0
-WmmCapable=1
+WmmCapable=0
 AckPolicy=0;0;0;0
 AuthMode=OPEN
 EncrypType=NONE
diff -urN a/chips/mt76x0.c b/chips/mt76x0.c
--- a/chips/mt76x0.c	2013-09-16 23:03:08.000000000 +0900
+++ b/chips/mt76x0.c	2015-03-07 15:15:54.706136902 +0900
@@ -1573,7 +1573,7 @@
 		E2: B0.R21<0>: xo_cxo<0>, B0.R22<7:0>: xo_cxo<8:1> 
 	*/
 	RFValue = (UCHAR)(pAd->RfFreqOffset & 0xFF);
-	RFValue = min(RFValue, 0xBF); /* Max of 9-bit built-in crystal oscillator C1 code */
+	RFValue = min(RFValue, (UCHAR)0xBF); /* Max of 9-bit built-in crystal oscillator C1 code */
 	rlt_rf_write(pAd, RF_BANK0, RF_R22, RFValue);
 	
 	rlt_rf_read(pAd, RF_BANK0, RF_R22, &RFValue);
diff -urN a/common/cmm_info.c b/common/cmm_info.c
--- a/common/cmm_info.c	2013-09-16 23:03:08.000000000 +0900
+++ b/common/cmm_info.c	2015-03-07 15:15:54.716136813 +0900
@@ -44,7 +44,7 @@
 
 #ifdef CONFIG_STA_SUPPORT
 	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
-		DBGPRINT(RT_DEBUG_TRACE, ("Driver version-%s %s %s\n", STA_DRIVER_VERSION, __DATE__, __TIME__));
+		DBGPRINT(RT_DEBUG_TRACE, ("Driver version-%s %s\n", STA_DRIVER_VERSION, STA_DRIVER_BUILD));
 #endif /* CONFIG_STA_SUPPORT */
 
     return TRUE;
diff -urN a/common/cmm_mac_usb.c b/common/cmm_mac_usb.c
--- a/common/cmm_mac_usb.c	2013-09-16 23:03:08.000000000 +0900
+++ b/common/cmm_mac_usb.c	2015-03-07 15:15:54.726136723 +0900
@@ -27,6 +27,8 @@
 
 #ifdef RTMP_MAC_USB
 
+#define usb_buffer_alloc(a, b, c, d) usb_alloc_coherent(a, b, c, d)
+#define usb_buffer_free(a, b, c, d) usb_free_coherent(a, b, c, d)
 
 #include	"rt_config.h"
 
diff -urN a/common/cmm_wpa.c b/common/cmm_wpa.c
--- a/common/cmm_wpa.c	2013-09-16 23:03:08.000000000 +0900
+++ b/common/cmm_wpa.c	2015-03-07 15:15:54.736136634 +0900
@@ -1802,17 +1802,17 @@
 	Return Value:
 
 	Note:
-		Output * KDF-Length (K, label, Context) where
+		Output \A1\F6 KDF-Length (K, label, Context) where
 		Input:    K, a 256-bit key derivation key
 				  label, a string identifying the purpose of the keys derived using this KDF
 				  Context, a bit string that provides context to identify the derived key
 				  Length, the length of the derived key in bits
 		Output: a Length-bit derived key
 
-		result * ""
-		iterations * (Length+255)/256 
+		result \A1\F6 ""
+		iterations \A1\F6 (Length+255)/256 
 		do i = 1 to iterations
-			result * result || HMAC-SHA256(K, i || label || Context || Length)
+			result \A1\F6 result || HMAC-SHA256(K, i || label || Context || Length)
 		od
 		return first Length bits of result, and securely delete all unused bits
 
@@ -2480,7 +2480,7 @@
 	UCHAR		PrimaryRsnie;			
 	BOOLEAN		bMixCipher = FALSE;	/* indicate the pairwise and group cipher are different*/
 	UCHAR		p_offset;		
-	WPA_MIX_PAIR_CIPHER		FlexibleCipher = MIX_CIPHER_NOTUSE;	/* it provide the more flexible cipher combination in WPA-WPA2 and TKIPAES mode*/
+	WPA_MIX_PAIR_CIPHER FlexibleCipher = WPA_TKIPAES_WPA2_TKIPAES;	/* it provide the more flexible cipher combination in WPA-WPA2 and TKIPAES mode*/
 		
 	rsnielen_cur_p = NULL;
 	rsnielen_ex_cur_p = NULL;
diff -urN a/common/mlme.c b/common/mlme.c
--- a/common/mlme.c	2013-09-16 23:03:08.000000000 +0900
+++ b/common/mlme.c	2015-03-07 15:15:54.746136544 +0900
@@ -535,8 +535,8 @@
 #endif /* RALINK_ATE */
 		/* for performace enchanement */
 		NdisZeroMemory(&pAd->RalinkCounters,
-						(UINT32)&pAd->RalinkCounters.OneSecEnd -
-						(UINT32)&pAd->RalinkCounters.OneSecStart);
+						(ULONG)&pAd->RalinkCounters.OneSecEnd -
+						(ULONG)&pAd->RalinkCounters.OneSecStart);
 
 	return;
 }
diff -urN a/common/rtusb_dev_id.c b/common/rtusb_dev_id.c
--- a/common/rtusb_dev_id.c	2013-09-16 23:03:08.000000000 +0900
+++ b/common/rtusb_dev_id.c	2015-03-07 15:15:54.746136544 +0900
@@ -36,8 +36,9 @@
 /* module table */
 USB_DEVICE_ID rtusb_dev_id[] = {
 #ifdef MT76x0
+	{USB_DEVICE(0x2019,0xAB31)}, /* GW-450D */
 	{USB_DEVICE(0x148F,0x7610)}, /* MT7610U */
-	{USB_DEVICE(0x0E8D,0x7610)}, /* MT7610U */
+	{USB_DEVICE(0x13B1,0x003E)}, /* MT7610U */
 	{USB_DEVICE_AND_INTERFACE_INFO(0x0E8D, 0x7630, 0xff, 0x2, 0xff)}, /* MT7630U */
 	{USB_DEVICE_AND_INTERFACE_INFO(0x0E8D, 0x7650, 0xff, 0x2, 0xff)}, /* MT7650U */
 #endif
diff -urN a/conf/RT2870STA.dat b/conf/RT2870STA.dat
--- a/conf/RT2870STA.dat	2013-09-16 23:03:08.000000000 +0900
+++ b/conf/RT2870STA.dat	2015-03-07 15:15:54.756136455 +0900
@@ -4,9 +4,9 @@
 CountryRegionABand=7
 CountryCode=
 ChannelGeography=1
-SSID=11n-AP
+SSID=
 NetworkType=Infra
-WirelessMode=5
+WirelessMode=8
 EfuseBufferMode=0
 Channel=0
 BeaconPeriod=100
@@ -17,10 +17,10 @@
 FragThreshold=2346
 TxBurst=1
 PktAggregate=0
-WmmCapable=1
+WmmCapable=0
 AckPolicy=0;0;0;0
-AuthMode=OPEN
-EncrypType=NONE
+AuthMode=WPA2PSK
+EncrypType=AES
 WPAPSK=
 DefaultKeyID=1
 Key1Type=0
diff -urN a/contributors.txt b/contributors.txt
--- a/contributors.txt	1970-01-01 09:00:00.000000000 +0900
+++ b/contributors.txt	2015-03-07 15:15:54.756136455 +0900
@@ -0,0 +1 @@
+Sanjit Rath
diff -urN a/include/mcu/mt7650_firmware.h b/include/mcu/mt7650_firmware.h
--- a/include/mcu/mt7650_firmware.h	2013-09-16 23:24:08.000000000 +0900
+++ b/include/mcu/mt7650_firmware.h	2015-03-07 15:25:46.590039797 +0900
@@ -1,28 +1,5 @@
-/*
- *************************************************************************
- * Ralink Tech Inc.
- * 5F., No.36, Taiyuan St., Jhubei City,
- * Hsinchu County 302,
- * Taiwan, R.O.C.
- *
- * (c) Copyright 2002-2010, Ralink Technology, Inc.
- *
- * 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.                                   *
- *                                                                       *
- * This program is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- * GNU General Public License for more details.                          *
- *                                                                       *
- * You should have received a copy of the GNU General Public License     *
- * along with this program; if not, write to the                         *
- * Free Software Foundation, Inc.,                                       *
- * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
- *                                                                       *
- *************************************************************************/
+/* AUTO GEN PLEASE DO NOT MODIFY IT */ 
+/* AUTO GEN PLEASE DO NOT MODIFY IT */ 
 
 
 UCHAR MT7650_FirmwareImage[] = {
diff -urN a/include/os/rt_linux.h b/include/os/rt_linux.h
--- a/include/os/rt_linux.h	2013-09-16 23:03:08.000000000 +0900
+++ b/include/os/rt_linux.h	2015-03-07 15:15:54.776136276 +0900
@@ -277,8 +277,8 @@
 
 typedef struct _OS_FS_INFO_
 {
-	int				fsuid;
-	int				fsgid;
+	kuid_t				fsuid;
+	kgid_t				fsgid;
 	mm_segment_t	fs;
 } OS_FS_INFO;
 
@@ -880,11 +880,20 @@
 #define SET_OS_PKT_LEN(_pkt, _len)	\
 		(RTPKT_TO_OSPKT(_pkt)->len) = (_len)
 		
+
+#ifdef NET_SKBUFF_DATA_USES_OFFSET
+#define GET_OS_PKT_DATATAIL(_pkt) \
+        (RTPKT_TO_OSPKT(_pkt)->head + (ULONG)RTPKT_TO_OSPKT(_pkt)->tail)
+#define SET_OS_PKT_DATATAIL(_pkt, _start, _len) \
+        ((RTPKT_TO_OSPKT(_pkt))->tail) = (ULONG)_start - (ULONG)(RTPKT_TO_OSPKT(_pkt)->head) + (_len)
+#else
 #define GET_OS_PKT_DATATAIL(_pkt) \
 		(RTPKT_TO_OSPKT(_pkt)->tail)
 #define SET_OS_PKT_DATATAIL(_pkt, _start, _len)	\
-		((RTPKT_TO_OSPKT(_pkt))->tail) = (PUCHAR)((_start) + (_len))
-		
+		((RTPKT_TO_OSPKT(_pkt))->tail) = (ULONG)((_start) + (_len))
+#endif 
+
+
 #define GET_OS_PKT_HEAD(_pkt) \
 		(RTPKT_TO_OSPKT(_pkt)->head)
 
diff -urN a/os/linux/config.mk b/os/linux/config.mk
--- a/os/linux/config.mk	2013-09-16 23:03:08.000000000 +0900
+++ b/os/linux/config.mk	2015-03-07 15:15:54.776136276 +0900
@@ -23,12 +23,12 @@
 
 # Support Wpa_Supplicant
 # i.e. wpa_supplicant -Dralink
-HAS_WPA_SUPPLICANT=n
+HAS_WPA_SUPPLICANT=y
 
 
 # Support Native WpaSupplicant for Network Maganger
 # i.e. wpa_supplicant -Dwext
-HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
+HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
 
 #Support Net interface block while Tx-Sw queue full
 HAS_BLOCK_NET_IF=n
@@ -207,12 +207,20 @@
 
 HAS_WIFI_P2P_CONCURRENT_FAST_SCAN=n
 
+STA_DRIVER_BUILD := 20141022-1327
+
 #################################################
 
 CC := $(CROSS_COMPILE)gcc
 LD := $(CROSS_COMPILE)ld
 
-WFLAGS := -g -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT  -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs
+ifndef $(WFLAGS)
+WFLAGS := -DSTA_DRIVER_BUILD="\"${STA_DRIVER_BUILD}\""
+else
+WFLAGS += -DSTA_DRIVER_BUILD="\"${STA_DRIVER_BUILD}\""
+endif
+
+WFLAGS += -g -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT  -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs
 WFLAGS += -DSYSTEM_LOG_SUPPORT -DRT28xx_MODE=$(RT28xx_MODE) -DCHIPSET=$(MODULE) -DRESOURCE_PRE_ALLOC -DENHANCED_STAT_DISPLAY
 #WFLAGS += -DFPGA_MODE
 WFLAGS += -I$(RT28xx_DIR)/include
@@ -660,7 +668,7 @@
 WFLAGS += -DCONFIG_CSO_SUPPORT -DCONFIG_TSO_SUPPORT
 endif
 
-CHIPSET_DAT = 2860
+CHIPSET_DAT = 2870
 endif
 
 ifneq ($(or $(findstring mt7662e,$(CHIPSET)),$(findstring mt7612e,$(CHIPSET))),)
diff -urN a/os/linux/rt_linux.c b/os/linux/rt_linux.c
--- a/os/linux/rt_linux.c	2013-09-16 23:03:08.000000000 +0900
+++ b/os/linux/rt_linux.c	2015-03-07 15:15:54.786136186 +0900
@@ -497,9 +497,9 @@
 		MEM_DBG_PKT_ALLOC_INC(skb);
 
 		skb_reserve(skb, 2);
-		NdisMoveMemory(skb->tail, pHeader802_3, HdrLen);
+		NdisMoveMemory(GET_OS_PKT_DATATAIL(skb), pHeader802_3, HdrLen);
 		skb_put(skb, HdrLen);
-		NdisMoveMemory(skb->tail, pData, DataSize);
+		NdisMoveMemory(GET_OS_PKT_DATATAIL(skb), pData, DataSize);
 		skb_put(skb, DataSize);
 		skb->dev = pNetDev;	/*get_netdev_from_bssid(pAd, FromWhichBSSID); */
 		pPacket = OSPKT_TO_RTPKT(skb);
@@ -650,7 +650,7 @@
 		pClonedPkt->dev = pRxPkt->dev;
 		pClonedPkt->data = pData;
 		pClonedPkt->len = DataSize;
-		pClonedPkt->tail = pClonedPkt->data + pClonedPkt->len;
+                SET_OS_PKT_DATATAIL(pClonedPkt, pClonedPkt->data, pClonedPkt->len);
 		ASSERT(DataSize < 1530);
 	}
 	return pClonedPkt;
@@ -695,7 +695,7 @@
 	pOSPkt->dev = pNetDev;
 	pOSPkt->data = pData;
 	pOSPkt->len = DataSize;
-	pOSPkt->tail = pOSPkt->data + pOSPkt->len;
+	SET_OS_PKT_DATATAIL(pOSPkt, pOSPkt->data, pOSPkt->len);
 
 	/* copy 802.3 header */
 
@@ -1105,9 +1105,10 @@
 		pOSFSInfo->fsuid = current->fsuid;
 		pOSFSInfo->fsgid = current->fsgid;
 		current->fsuid = current->fsgid = 0;
+
 #else
 		pOSFSInfo->fsuid = current_fsuid();
-		pOSFSInfo->fsgid = current_fsgid();
+		pOSFSInfo->fsgid = current_fsgid(); 
 #endif
 		pOSFSInfo->fs = get_fs();
 		set_fs(KERNEL_DS);
diff -urN a/os/linux/usb_main_dev.c b/os/linux/usb_main_dev.c
--- a/os/linux/usb_main_dev.c	2013-09-16 23:03:08.000000000 +0900
+++ b/os/linux/usb_main_dev.c	2015-03-07 15:15:54.786136186 +0900
@@ -39,7 +39,7 @@
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Paul Lin ");
 MODULE_DESCRIPTION("RT2870 Wireless Lan Linux Driver");
-
+MODULE_LICENSE("GPL");
 #ifdef CONFIG_STA_SUPPORT
 #ifdef MODULE_VERSION
 MODULE_VERSION(STA_DRIVER_VERSION);
diff -urN a/sta/sta_cfg.c b/sta/sta_cfg.c
--- a/sta/sta_cfg.c	2013-09-16 23:03:08.000000000 +0900
+++ b/sta/sta_cfg.c	2015-03-07 15:15:54.796136097 +0900
@@ -5398,7 +5398,7 @@
             wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */
             break;
         case SHOW_DRVIER_VERION:
-            snprintf(extra, size, "Driver version-%s, %s %s\n", STA_DRIVER_VERSION, __DATE__, __TIME__ );
+            snprintf(extra, size, "Driver version-%s, %s\n", STA_DRIVER_VERSION, STA_DRIVER_BUILD );
             wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */
             break;
 #ifdef DOT11_N_SUPPORT
あとはこのパッチを当てればコンパイル・インストールできる筈である。
$ tar xvjf mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2
$ cd mt7610u_wifi_sta_v3002_dpo_20130916/
$ patch -p1 < ../mediatek_mt7610u_sta_driver_for_3.18.8.patch
$ make
$ sudo make install
なお、文字コードの関係で一部リジェクトされ、手修正が必要になる場合がある。
 最後に冒頭のメーカ(プラネックス)記事を参考にネットワーク設定すれば良い。
nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

Raspberry Pi 2 (raspbian) Kodi+iptvsimpleでメディアセンター [Raspberry Pi]

 注文した「Raspberry Pi 2」が手元に届いたので早速raspbianを導入、更にKodi+iptvsimpleをインストールしメディアセンターとして使用してみた。
 最初にkodiのインストール、
$ sudo vi /etc/apt/sources.list.d/mene.list
deb http://archive.mene.za.net/raspbian wheezy contrib
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED
$ sudo apt-get update
$ sudo apt-get install kodi
この時ユーザー「kodi」も新規追加される。次は電源ONでKodiが自動起動するよう設定、
$ sudo vi /etc/default/kodi
# Set this to 1 to enable startup
ENABLED=1

# The user to run Kodi as
USER=kodi
・・・・・・・・・・・・
これでOS再起動でKodiが立ち上がってくるが、このままではキーボード等の入力を受け付けてくれなかったので、以下を設定した。
$ sudo vi /etc/group
・・・・・・・・・・・・
netdev:x:105:pi
input:x:999:pi,kodi
messagebus:x:106:
・・・・・・・・・・・・
$ sudo reboot
立ち上がってきたKodiの日本語化は以前のこの記事を参考に。次にiptvsimpleをインストール、
$ sudo apt-get install kodi-pvr-iptvsimple
iptvsimpleの設定の方も以前のこの記事を参考に。
 ちなみにOSMC(Raspbmcの後継)、OpenELEC(ver.5.0.3)とiptvsimpleでライブ視聴を試してみたがこちらの方では動作させることができなかった。
 このままではホーム画面の電源ボタンでは「終了」メニューしか表示されないので、必要であれば以下で「シャットダウン」メニューなどを追加すると良いだろう。
$ sudo su
# vi /var/lib/polkit-1/localauthority/50-local.d/kodi.pkla
[Actions for xbmc user]
Identity=unix-user:kodi
Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes
【2015.3.21追記】これで上手く行かない場合は、最終行を「no」にして試してみる。
nice!(0) 
共通テーマ:パソコン・インターネット

Raspberry Pi(OpenELEC、Raspbmc)を家庭用TVからリモコン操作 [Raspberry Pi]

 Raspberry Pi(OpenELEC又はRaspbmc、最近は主に後者)は省電力なメディアプレヤーとして重宝している。家庭用TVと接続した際にはリモコンでの操作が便利だが、Raspberry PiのGPUはCEC(Consumer Electronics Control)をサポートしているので別にリモコンを用意すること無く、家庭用TVリモコンでそのまま操作できる。詳細は「CEC - XBMC」によるが、これは家電メーカが言うところの、「Regza Link」、「VIERA Link」、「BRAVIA Link」..のことらしく、DVDレコーダ等の周辺機器をTVリモコンから一元的に操作することを目的にしているようだ。こういった類の機器は持っていないので実際に操作したことはないが..。
 自身はTOSHIBAのTV(REGZA)とHDMI接続しているが、双方特別な設定は必要ない。Raspberry Pi側の電源ON/OFFでTV側も自動で電源ON/OFF・入力切替の他、XBMCの基本操作も可能であり不自由はない。因みに一般PCでは別にCECアダプターなるものが必要になるようだが、Raspberry Piなら単独で出来てしまう。
nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

Raspberry Pi ルートファイルシステムをUSBドライブに変更 [Raspberry Pi]

たまたま自身のRaspberryPiだけなのか、SDカード上のルートファイルシステム(/dev/mmcblk0p2)がよく壊れる。SDカードを替えても同じで、またOpenELEC、Raspbian双方で発生している。何とか改善できないかと、SDカード上のルートファイルシステムをUSBドライブ側に変更して様子をみることにした。以下がRaspbianについての変更手順になる。準備するものは次の通り。
・SDカード(Raspbianをインストール済)
・USBフラッシュメモリ(ラベル名:USBDISK、ext4でフォーマット済)
・Ubuntu 12.10マシン
UbuntuマシンにSD、USBフラッシュメモリをセットしたら夫々のマウントポイント確認しておく。
$ ls /media/USER/ #USERはログイン名
USBDISK UUID1 UUID2
ここでUUID1、UUID2はRaspbianインストルール済SDカードの「boot」パーティション、「/(ルート)」パーティション のそれぞれのUUID(実際はHEX値の並び)に置換える。まず「/(ルート)」配下のファイルを丸ごとUSBDISKへコピー。
$ sudo su
# cd /media/USER/UUID2/
# tar cfpv - --exclude=./lost+found --exclude=./sys --exclude=./proc . | tar xfpv - -C /media/USER/USBDISK/
# sync
# cd /media/USR/USBIDSK/
# mkdir sys
# mkdir proc
次に「boot」パーティションにある「cmdline.txt」の「root=/dev/mmcblk0p2」を以下の通り変更、
# vi /media/USER/UUID1/cmdline.txt
・・・・console=tty1 root=/dev/sda1/ rootfstype=ext4・・・・・・・・
同様にUSBDISK側「/etc/fstab」の「/dev/mmcblk0p2」も以下の通り変更。
# vi /media/USER/USBDISK/etc/fstab/
/proc                     /proc ・・・・・・・・・・・・・・・・・
/dev/mmcblk0p1    /boot ・・・・・・・・・・・・・・・・・
/dev/sda1             /       ・・・・・・・・・・・
これで、このSDカードとUSBフラッシュメモリでルートファイルシステムがUSBドライブのRaspbianが無事起動できた。まだUSB運用はそれほど長くはないが、ルートファイルシステムが壊れる事象はまだ発生していない。
ちなみにOpenELECも同様な手順で行けるが、「/etc/fstab」の変更は不要であった。またこちらの方もルートファイルシステムが壊れる事象はまだ発生していない。

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

Raspberry Pi Raspbian+KTV-FSUSB2でリアル視聴 [Raspberry Pi]

前記事では「OpenELEC」で手っ取り早くGPUののビデオ再生支援を試してみたが、今回はRaspbian(wheezy)+KTV-FSUSB2でリアル視聴も試してみた。「recfsusb2n」の方はこちらのソースに「適当な何かの別館」の「recfsusb2n tsspliteer_lite内蔵・httpサーバー機能追加・recpt1ctl対応パッチ」(recfsusb2n_http_patch2.zip)を適用したものを使用した。
$ sudo apt-get install git
$ git clone https://github.com/sh0/recfsusb2n
$ cd recfsusb2n/src/
$ unzip ../../recfsusb2n_http_patch2.zip
コンパイルには「Makefile」の変更が必要であった。「CXXFLAGS」、「CFLAGS」から「-march=native」オプションの削除、「LIBS」はコメントアウトされている行の先頭「#」を削除、次行の先頭に「#」を追加して、
$ make
$ sudo cp recfsusb2n /usr/local/bin/
$ sudo vi /lib/udev/rules.d/89-tuner.rules
# FSUSB2N
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="0511",\
ATTRS{idProduct}=="0029", MODE="0664", GROUP="video"
$ sudo shutdown -r now
後は
$ recfsusb2n --b25 --sid hd --http 8888
$ omxplayer -o hdmi http://localhost:8888/27
これで問題なくリアル視聴ができた。(MPEG2ライセンキーを「/boot/config.txt」設定済が前提)
ただし「omxplayer」は常にフルスクリーン表示、VLC等のように画面サイズの変更はできない。
nice!(0)  コメント(1) 
共通テーマ:パソコン・インターネット

Raspberry Pi + OpenELEC HWビデオ再生支援機能を試してみた [Raspberry Pi]

注文してから3ヶ月、「Raspberry Pi」がようやく手元に届いたので、「OpenELEC」をインストールし、手っ取り早くGPUののビデオ再生支援能力を試してみた。OpenELEC用SDは他マシン(Ubuntu)で作成した。
$ wget http://releases.openelec.tv/OpenELEC-RPi.arm-2.95.5.tar.bz2
$ tar xvfj OpenELEC-RPi.arm-2.95.5.tar.bz2
$ cd OpenELEC-RPi.arm-2.95.5/
$ sudo fdisk -l # デバイス名の確認
・・・・・・・・・・・・
デバイス ブート  始点   終点  ブロック   Id  システム
/dev/sdd  *   2048  1929215   963584   c  W95 FAT32 (LBA)
$ sudo ./create_sdcard /dev/sdd
後は作成したSDカードをRaspberry Piにセットして電源(5V)を入れてやればXBMCが立ち上がる。XBMCの日本語化は以前のこの記事を参考に。
このままデフォルト状態(clock700MHz)で録画サーバ上のMP4ファイル(H.264/MPEG-4)はネットワークを通して問題なく再生できた。TSファイル(MPEG-2)の方はHWデーコードが無効になっているので「MPEG-2 license key」をこちらから別途購入して有効化する必要がある。リーズナブル(£2.40)なので迷わず購入、深夜に注文し約6時間後にメールで送付されてきた。購入には「serial number」が必要になるので、他マシン(Ubuntu)から
$ ssh root@xxx.xxx.xxx.xxx # IPアドレスは「システム→システム情報→概要」で確認 ・・・・・・・・・
OpenELEC Version: 2.95.5
root@xxx.xxx.xxx's password: openelec
root ~ # cat /proc/cpuinfo
・・・・・・・・・
Serial : 00000000XXXXXXXX
により確認すればよい。送付されたきたライセンスキーの設定は、他マシン(Ubuntu)でOpenELEC用SDカードをmountし、
$ vi /media/(USER)/System/config.txt
・・・・・・・・・・・・・
decode_MPG2=0x12345678
# decode_WVC1=0x00000000
# decode_DTS=0x00000000
# decode_DDP=0x00000000
・・・・・・・・・・・・・
設定すれば良い。これでTSファイル(1440x1080)再生では問題無かったが、BS放送に多いTSファイル(1920x1080)では再生中に時々引っ掛かることがあった。そこで「overclock」を実施、
$ vi /media/(USER)/System/config.txt
・・・・・・・・・・・・・
arm_freq=950
core_freq=250
sdram_freq=450
over_voltage=6
・・・・・・・・・・・・・
これでTSファイル(1920x1080)も問題なく再生できるようになった。まだ数日運用しただけなので、これらの値は変更する必要があるかもしれないが。
値段からそれ程期待していなかったが、これほど使えることに正直驚きである。また省電力(約5W)なのも有難い。当面、リモコンでメディアセンターとして便利に使うつもりである。
nice!(0)  コメント(1) 
共通テーマ:パソコン・インターネット
Raspberry Pi ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。