2013年12月26日 (木)

hx2750でDebian Lenny を使う - カーネル構築メモ

■hx2750用カーネルコンパイルの手順

○必要なファイル
①クロスコンパイラ(gcc 4.2.1)
 arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
 コンパイル時には、arm-none-linux-gnueabi- を指定
②Linuxカーネルソース
   linux-2.6.23.tar.bz2
③hx2750用パッチセット
   patch-2.6.23.tar.gz
ダウンロード先
https://drive.google.com/folderview?id=0B8KJCKOFsibxNnRtNHA0WDBsNUk&usp=sharing

■コンパイル環境の準備

Ubuntu 10.04 で構築。
必要なファイルをUbuntu配下の/home/hx2750 に転送しておく。
○クロスコンパイラの展開
# cd /usr/local
# bzip2 -dc /home/hx2750/arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 | tar xvf - 

○カーネルソースの展開
# cd /home/hx2750
# tar xvfz linux-2.6.23.tar.bz2 

○パッチセットの展開
# cd /home/hx2750
# tar xvfz patch-2.6.23.tar.gz

○環境変数の設定
# export PATH=/usr/local/arm-2007q3/bin:$PATH
# export ARCH=arm

○パッチセットの適用
# cd /home/hx2750/linux-2.6.23 
# patch -p1 < ../patch-2.6.23/001-001-hx2750_base-r29.patch
# patch -p1 < ../patch-2.6.23/002-hx2750_bl-r9.patch
 ....
# patch -p1 < ../025-htcuni-acx.patch

番号がついているパッチを順番に全て実行する。

○ビルド手順
# cd /home/hx2750/inux-2.6.23

すべての設定されたファイルを削除する
# make mrproper

用意されているconfファイルを利用する
# cp ../patch-2.6.23/defconfig-hx2750 ./.config

ドライバなどの選択をする
# make menuconfig

ビルド実行
# make 

モジュールのインストール(インストールされる場所=/lib/modules/2.6.23)
# make modules_install 

tarで固める
# cd /lib/modules
# tar cvfz /home/hx2750/modules-2.6.23.tar.gz ./2.6.23

カーネルファイル
# cd /home/hx2750
# cp ./linux-2.6.23/arch/arm/boot/zImage ./zImage-2.6.23

SDカードのFATパーティションに以下のファイルを転送する。
zImage-2.6.23、modules-2.6.23.tar.gz

※modules-2.6.23.tar.gz は、iPAQ上でLinuxブート後、以下のような手順で展開する。

# mount -t vfat /dev/mmcblk0p1 /mnt/card
# cd /lib/modules
# tar xvfz /mnt/card/modules-2.6.23.tar.gz

■カーネル構築、起動までの留意事項

①カーネルバージョンによってmmcblk0のメジャー番号が違うことがあった。

2.6.23 では

# cd dev
# mknod mmcblk0 b 179 0
# mknod mmcblk1 b 179 1
# mknod mmcblk2 b 179 2

で作成するが、2.6.20 では

# cd dev
# mknod mmcblk0 b 254 0
# mknod mmcblk1 b 254 1
# mknod mmcblk2 b 254 2

だった。
②ブート時SDカードの認識は遅れる。

ブート時のパラメータに rootdelay=x を入れないと以下のようなメッセージで落ちる。
rootwaitというパラメータもあるらしいが有効ではなかった。

VFS: Cannot open root device "mmcblk0p2" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

③haret.exeで指定しているdefault.txtの起動パラメータ
default.txt

set KERNEL zImage.2.6.23
set MTYPE 709
set CMDLINE "root=/dev/mmcblk0p2 rw rootdelay=6 noinitrd mem=128M cachepolicy=writeback console=tty0 console=ttyS0,115200n8 apm=off"
boot
root=/dev/mmcblk0p2 rw 
...ルートをSDカードの2番目のパーティションに指定する。rw は読み書きありの意味。

rootdelay=6 
...このパラメータがないとSDがないとメッセージが出てルートマウントできない。
   SDカードのパーティションを認識するまで6秒待たせる。

noinitrd
...直接ルートマウントさせる(initrdを使用しない)

mem=128M
...このパラメータがないと64MBのRAMと認識してしまう

console=tty0 console=ttyS0,115200n8
...tty0はタッチパネル、ttyS0はCOM1のこと。
   console=を複数記述することで、複数のコンソール指定が出来る。
   inittabにも記述が必要。

apm=off
...時間がたつと勝手にスリープに入るので止めさせる。

■hx2750用のパッチ入手元
http://www.rpsys.net/openzaurus/patches/
http://www.rpsys.net/openzaurus/patches/ipaq/
http://www.rpsys.net/openzaurus/patches/archive/
http://dev.openaos.org/browser/trunk/buildroot/patches/linux-2.6.23/generic?rev=193

■PCとのUSB接続について

・Linuxでは、USB Gadgetというモジュールがあり、PCとUSB接続できる
・接続できる方法に2種類がある

①USB Ethernet/RNDIS 経由
②USB Serial 経由

○モジュールロード方法
  # modprobe g_ether                   ... USB Ethernet/RNDIS
  # modprobe g_serial use_acm=1        ... USB Serial(CDC-ACM経由)

○PC側は事前にWindowsドライバのインストールが必要。

  USB Ethernet/RNDISは、Linux_USB_Ethernet_RNDIS_Gadget.inf
  USB Serialは、linux-cdc-acm.inf

それぞれググって、ダウンロードしてインストールする。
なお、このファイル単体でインストールできる。
ドライバファイルはOS標準のものを使っている。
○USB SerialはPC側では認識はするがドライバを入れても通信出来なかった。
  →パッチ不十分かも。

○hx2750用には以下のパッチをあてる必要がある。
  →以下のパッチはUSBへの電源ONを行う処理らしい。

--- linux-2.6.17.6/arch/arm/mach-pxa/hx2750.c   2006-08-21 00:53:22.000000000 +0300
+++ b/arch/arm/mach-pxa/hx2750.c        2006-08-21 00:53:59.000000000 +0300
@@ -90,13 +90,21 @@
        return GPLR0 & GPIO_bit(HX2750_GPIO_USBCONNECT);
 }
 
-//static void hx2750_udc_command (int cmd) 
-//{
-//}
+static void hx2750_udc_command (int cmd) 
+{
+       switch (cmd) {
+       case PXA2XX_UDC_CMD_CONNECT:
+               GPSR(HX2750_GPIO_USBPULLUP) = GPIO_bit(HX2750_GPIO_USBPULLUP);
+               break;
+       case PXA2XX_UDC_CMD_DISCONNECT:
+               GPCR(HX2750_GPIO_USBPULLUP) = GPIO_bit(HX2750_GPIO_USBPULLUP);
+               break;
+       }                       
+}
 
 static struct pxa2xx_udc_mach_info hx2750_udc_mach_info = {
        .udc_is_connected = hx2750_udc_is_connected,
-//     .udc_command      = hx2750_udc_command,
+       .udc_command      = hx2750_udc_command,
 };
 
 
--- linux-2.6.17.6/include/asm-arm/arch-pxa/hx2750.h    2006-08-21 00:53:22.000000000 +0300
+++ b/include/asm-arm/arch-pxa/hx2750.h 2006-08-21 00:54:07.000000000 +0300
@@ -49,6 +49,7 @@
 #define HX2750_GPIO_SD_READONLY (103)  /* MMC/SD Write Protection */
 #define HX2750_GPIO_LEDMAIL     (106)  /* Green Mail LED */
 #define HX2750_GPIO_HP_JACK     (108)  /* Head Phone Jack Present */
+#define HX2750_GPIO_USBPULLUP  (114)  /* enable usb pullup output */
 #define HX2750_GPIO_PENDOWN     (117)  /* Touch Screen Pendown */

■クロスコンパイラのバージョンについて
○gcc 4.3.2 では、2.6.24をビルドしようとして以下のコンパイルエラーが発生

kernel/built-in.o: In function `getnstimeofday':
utsname_sysctl.c:(.text+0x2343c): undefined reference to `__aeabi_uldivmod'
kernel/built-in.o: In function `do_gettimeofday':
utsname_sysctl.c:(.text+0x234e8): undefined reference to `__aeabi_uldivmod'
utsname_sysctl.c:(.text+0x23508): undefined reference to `__aeabi_uldivmod'
kernel/built-in.o: In function `timekeeping_resume':
utsname_sysctl.c:(.text+0x2369c): undefined reference to `__aeabi_uldivmod'
utsname_sysctl.c:(.text+0x236b8): undefined reference to `__aeabi_uldivmod'

gcc 4.2.1 で試したところ成功した。
新しいバージョンだとこういうことがあるらしい。

○debian を動かすためにはカーネルの以下の項目は必須。
  debianの各種ファイルは、EABIの為

Kernel Features ---->
        [*] Use the ARM EABIto compile the kernel

■現在のIPアドレスの設定について

eth0  ... 192.168.1.10 / 255.255.255.0
usb0  ... 192.168.0.10 / 255.255.255.0
wlan0 ... 何も設定せず

eth0は、CFスロットにLANカードを入れた場合に認識するデバイス
usb0は、USB Ethernet/RNDISで認識するデバイス

■デバイス情報

①SDカード  ... デバイス名は、mmcblk0、パーティションは、mmcblk0p1, mmcblk0p2となる。
②CFメモリカード  ... デバイス名は、hda、パーティションは、hda1, hda2 となる。
②CF-LANカード(CF-100TX2) ... ドライバ Asix AX88790 で認識、デバイスは、eth0
③タッチスクリーン ... ドライバ tsc2101 で認識、デバイスは/dev/input/event1
④内臓-WIFI ... PCMCIAの1ポートとして認識、デバイスは、wlan0
# pccardctl ident
Socket 0:
  product info: "SAMSUNG", "WLAN CF Card(SWL-2350)", "", ""
  manfid: 0x0250, 0xb001
  function: 6 (network)
⑤USBポート、USB Ethernet/RNDISで認識、デバイスはusb0

| | コメント (0) | トラックバック (0)

2013年12月25日 (水)

hx2750でDebian Lenny を使う - 内臓WiFi構築

ググってみるとiPAQの内臓Wifiを使うには、acx100ドライバを使うとあった。
kernel 2.6.23 には標準でacx100ドライバは入っておらず、
ググってみるとパッチの中にacxドライバが見つかったので試してみた。
パッチファイルは、htcuni-acx.patch
以下のサイトから入手
http://git.yoctoproject.org/cgit.cgi/poky/plain/meta/packages/linux/linux-rp-2.6.23/?h=purple

Kconfigをみると CONFIG_NET_RADIO=y にする必要があるらしい。
kernel 2.6.23 では、menuconfig で以下の項目を有効にしてみた。

#  make menuconfig
[*] Network device support  --->
        Wireless LAN  --->
                [*] Wireless LAN drivers (non-hamradio) & Wireless Extensions 
                [*]   Wireless Extension API over RtNetlink

上記の設定をすると、acx100ののcardbusのドライバが選択できる。

[*] Network device support  --->
        Wireless LAN  --->
                [M] TI acx100/acx111 802.11b/g wireless chipsets
                [*]   TI acx100/acx111 802.11b/g cardbus interface

念のため以下の設定も<*>にする。

Networking  --->
        Wireless  --->
                <*> Generic IEEE 802.11 Networking Stack (mac80211)
                <*> Generic IEEE 802.11 Networking Stack
                        <*>   IEEE 802.11i CCMP support
                        <*>   IEEE 802.11i TKIP encryption
                <*>   Software MAC add-on to the IEEE 802.11 networking stack

起動させてみると、firmwareファイルが必要とエラーメッセージが出た。

# modprobe acx

acx: this driver is still EXPERIMENTAL
acx: reading README file and/or Craig's HOWTO is recommended, 
visit http://acx100.sf.net in case of further questions/discussion
MEMORY WINDOW FOUND!!!
requesting Irq...
pcmcia: request for exclusive IRQ could not be fulfilled.
pcmcia: the driver needs updating to supported shared IRQ lines.
acx: found ACX100-based wireless network card
memwinbase=3c000000 memwinsize=4096
ACX radio type 0x0d
acx: firmware image 'WLANGEN.BIN' was not provided. Check your hotplug scripts
acx: reset_dev() FAILED
wlan%d: index 0x01: irq 118, mem 0x3c000000-0x3c000fff

ググってHX4700用のFirmwareを /lib/firmware に置いてみる。

# ls /lib/firmware/
RADIO0d.BIN  RADIO11.BIN  WLANGEN.BIN

再度リブートして確認

Linux version 2.6.23 (root@atde) (gcc version 4.2.1 (CodeSourcery Sourcery G++ Lite 2007q3-51)) 
#18 PREEMPT Wed Dec 25 18:29:47 JST 2013
CPU: XScale-PXA270 [69054114] revision 4 (ARMv5TE), cr=0000397f
Machine: HP iPAQ HX2750
Memory policy: ECC disabled, Data cache writeback
Run Mode clock: 208.00MHz (*16)
Turbo Mode clock: 624.00MHz (*3.0, active)
Memory clock: 208.00MHz (/2)
System bus clock: 208.00MHz
CPU0: D VIVT undefined 5 cache
CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
Built 1 zonelists in Zone order.  Total pages: 32512
Kernel command line: root=/dev/mmcblk0p2 rw rootdelay=6 noinitrd ramdisk_size=12288 
mem=128M cachepolicy=writeback console=tty0 console=ttyS0,115200n8 apm=off
PID hash table entries: 512 (order: 9, 2048 bytes)
Console: colour dummy device 80x30
console [tty0] enabled
console [ttyS0] enabled
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 128MB = 128MB total
Memory: 127104KB available (2516K code, 192K data, 92K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
SSP Devices Initialised
NET: Registered protocol family 2
Time: oscr0 clocksource has been installed.
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
input: pxa2xx-keys as /class/input/input0
NetWinder Floating Point Emulator V0.97 (double precision)
io scheduler noop registered
io scheduler anticipatory registered (default)
Console: switching to colour frame buffer device 30x40
Load PXA Overlay driver successfully!
pxa2xx-uart.0: ttyS0 at MMIO 0x40100000 (irq = 22) is a FFUART
pxa2xx-uart.1: ttyS1 at MMIO 0x40200000 (irq = 21) is a BTUART
pxa2xx-uart.2: ttyS2 at MMIO 0x40700000 (irq = 20) is a STUART
RAMDISK driver initialized: 16 RAM disks of 12288K size 1024 blocksize
loop: module loaded
input: tsc2101_ts as /class/input/input1
tsc2101 touchscreen driver initialized
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
pxa27x_udc: version 01-01-2006
ether gadget: using random self ethernet address
ether gadget: using random host ethernet address
usb0: Ethernet Gadget, version: May Day 2005
usb0: using pxa27x_udc, OUT ep2out-bulk IN ep1in-bulk STATUS ep3in-intr
usb0: MAC c6:3a:40:6f:36:24
usb0: HOST MAC c2:82:61:c3:61:f6
usb0: RNDIS ready
power.c: Adding power management to input layer
sa1100-rtc sa1100-rtc: rtc core: registered sa1100-rtc as rtc0
TCP cubic registered
NET: Registered protocol family 1
ieee80211: 802.11 data/management/control stack, git-1.1.13
ieee80211: Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com>
XScale iWMMXt coprocessor detected.
hx2750 Test Code Initialized.
sa1100-rtc sa1100-rtc: setting the system clock to 1995-05-10 12:00:50 (800107250)
Waiting 6sec before mounting root device...
pccard: PCMCIA card inserted into slot 0
pcmcia: registering new device pcmcia0.0
mmc0: new SD card at address 0002
mmcblk0: mmc0:0002 00000 1955840KiB
 mmcblk0: p1 p2
pccard: PCMCIA card inserted into slot 1
pcmcia: registering new device pcmcia1.0
kjournald starting.  Commit interval 5 seconds
EXT3 FS on mmcblk0p2, internal journal
EXT3-fs: recovery complete.
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem).
Freeing init memory: 92K
INIT: version 2.86 booting
Starting the hotplug events dispatcher: udevd.
Synthesizing the initial hotplug events...done.
Waiting for /dev to be fully populated...mice: PS/2 mouse device common for all mice
acx: this driver is still EXPERIMENTAL
acx: reading README file and/or Craig's HOWTO is recommended, visit http://acx100.sf.net in case of further questions/discussion
pcmcia: request for exclusive IRQ could not be fulfilled.
pcmcia: the driver needs updating to supported shared IRQ lines.
eth0: Asix AX88790: io 0xc8820300, irq 75, hw_addr 00:90:CC:DE:D2:58
MEMORY WINDOW FOUND!!!
requesting Irq...
pcmcia: request for exclusive IRQ could not be fulfilled.
pcmcia: the driver needs updating to supported shared IRQ lines.
acx: found ACX100-based wireless network card
memwinbase=3c000000 memwinsize=4096
ACX radio type 0x0d
acx copy_from_slavemem: warning!  destination not word-aligned!
acx copy_from_slavemem: warning!  destination not word-aligned!
NVS_vendor_offs:0000 probe_delay:500 eof_memory:65536
CCAModes:04 Diversity:01 ShortPreOpt:01 PBCC:01 ChanAgil:00 PHY:05 Temp:01
AntennaID:01 Len:02 Data:1E 00
PowerLevelID:0A Len:00 Data:
DataRatesID:02 Len:05 Data:02 04 11 22 44
DomainID:03 Len:08 Data:30 20 10 31 32 40 41 04
ProductID:09 Len:53 Data:WL-2300
ManufacturerID:CC Len:3B Data:v・ワャ・ゥオ}
                                          
acx: === chipset TNETW1100B, radio type 0x0D (Maxim), form factor 0x03 (Compact Flash), EEPROM version 0x05: uploaded firmware 'Rev 1.10.7.K' ===
acx copy_from_slavemem: warning!  destination not word-aligned!
acx copy_from_slavemem: warning!  destination not word-aligned!
acx copy_from_slavemem: warning!  destination not word-aligned!
acx copy_from_slavemem: warning!  destination not word-aligned!
acx v0.3.36: net device wlan0, driver compiled against wireless extensions 22 and Linux 2.6.23
wlan0: index 0x01: irq 118, mem 0x3c000000-0x3c000fff
done.
Setting the system clock.
Activating swap...done.
Checking root file system...fsck 1.41.3 (12-Oct-2008)
/dev/mmcblk0p2: clean, 18429/91392 files, 99369/365478 blocks
done.
EXT3 FS on mmcblk0p2, internal journal
Setting the system clock.
Cleaning up ifupdown....
Loading kernel modules...done.
Checking file systems...fsck 1.41.3 (12-Oct-2008)
done.
Setting kernel variables (/etc/sysctl.conf)...done.
Mounting local filesystems...done.
Activating swapfile swap...done.
Setting up networking....
Configuring network interfaces...done.
Setting up ALSA...done (none loaded).
Recovering jove files ... Done.
INIT: Entering runlevel: 2
Starting enhanced syslogd: rsyslogd.
Starting internet superserver: inetd.
Starting FTP server: vsftpd.
Starting periodic command scheduler: crond.

Debian GNU/Linux 5.0 debian ttyS0

debian login: 

気になるメッセージが出ているが、wlan0が認識しているようなので、iwconfigコマンドで確認する。

root@debian:~# iwconfig
lo        no wireless extensions.

usb0      no wireless extensions.

eth0      no wireless extensions.

wlan0     IEEE 802.11b+  ESSID:"STA448E9F"  Nickname:"acx v0.3.36"
          Mode:Managed  Frequency:2.412 GHz  Access Point: Not-Associated
          Bit Rate:22 Mb/s   Tx-Power=14 dBm   Sensitivity=176/255
          Retry min limit:7   RTS thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

wlan0 が有効になっていることが分かる。次にアクセスポイントを指定してみる。

# iwconfig wlan0 essid "ISW11k"
# ifconfig wlan0 key 0123456789

DHCPを起動する

# dhclient wlan0
Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

wlan0: changing radio power level to 14 dBm (47)
NET: Registered protocol family 17
Listening on LPF/wlan0/00:02:78:44:8e:9f
Sending on   LPF/wlan0/00:02:78:44:8e:9f
Sending on   Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
DHCPOFFER from 192.168.43.1
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 192.168.43.1
bound to 192.168.43.60 -- renewal in 1503 seconds.

IPアドレスがリリースされ、繋がった!!。
通信確認をとるため、パッケージのダウンロードを試す。

# apt-get install lrzsz

Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  minicom
The following NEW packages will be installed:
  lrzsz
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 107kB of archives.
After this operation, 270kB of additional disk space will be used.
Get:1 http://archive.debian.org lenny/main lrzsz 0.12.21-4.1 [107kB]
Fetched 107kB in 5s (19.5kB/s)
tar: ./control: time stamp 2007-05-30 21:41:09 is 380453666.777313846 s in the future
tar: ./md5sums: time stamp 2007-05-30 21:41:11 is 380453668.774172923 s in the future
tar: .: time stamp 2007-05-30 21:41:10 is 380453667.773504615 s in the future
Selecting previously deselected package lrzsz.
(Reading database ... 14878 files and directories currently installed.)
Unpacking lrzsz (from .../lrzsz_0.12.21-4.1_armel.deb) ...
Processing triggers for man-db ...
Setting up lrzsz (0.12.21-4.1) ...

ダウンロード成功。とりあえず使える環境になった。

| | コメント (0) | トラックバック (0)

2013年8月19日 (月)

SC-02BにカスタムROM SuperNexus 2.0 を入れる

SC-02BのカスタムROM、C-Rom Mixでは、使っている最中にキーボードの反応が遅れることがありました。おそらくメモリが足りないのが原因かもしれません。

軽めのカスタムROMがないか探していたところ、ありました!。
android 4.2.2 のSuperNexus 2.0です。

こんな画面です。

Lockscreen


Home


Ver


ダウンロードは以下のサイトから
http://forum.xda-developers.com/showthread.php?t=2219235

サイトの以下をクリックして、ファイルをダウンロードします。
Latest Build:    SuperNexus 2.0 GalaxySMTD M1 (02-06-13) ...
ファイル名:SuperNexus-2.0-galaxysmtd-M1.zip

Google Apps:    Google Apps JB 20130301 ..
ファイル名:gapps-jb-20130301-signed.zip

SC-02B用のカーネルやパッチファイルは以下のサイトからダウンロードします。
http://goo.im/devs/didhiy/sc-02b_cm-10.1
Semaphore_JB_2.9.25sj.zip
sc02b-OMLL1-modem.zip
sc02b-OMLL1-ril-gps-blobs.zip

インストール手順
①SuperNexus-2.0-galaxysmtd-M1.zip の中身を修正します。
zipを解凍し、META-INF>com>google>androidにあるupdater-scriptを編集します。

エディタでupdater-scriptの最初の5行(ro.product.model=GT-I9000とかの記述)を
削除します。これでGT-I9000以外のSC-02Bでも書き込めるようになるはずです。
そして、再度すべてのファイルをzip圧縮します。

②android 2.3.6のOSからCWMが使えるカーネルをインストールします。
私は、KL4のT10mod3をOdinから焼いてインストールしました。

③一度電源OFFし、電源ON+HOME+音量上でCWMへ入ります。
「Wipe data/Factory reset」を実行後、
「install zip from sdcard」でSuperNexus-2.0-galaxysmtd-M1.zipを選択します。
するとインストール後、自動的にリブートします。そして何故か、固まります!?

④そこで、電源OFFして電源ON+HOME+音量上で再度CWMへ入ります。
前回とは違うバージョンのCWMが表示されると思います。

そこから再度、「install zip from sdcard」で
SuperNexus-2.0-galaxysmtd-M1.zip
Semaphore_JB_2.9.25sj.zip
sc02b-OMLL1-modem.zip
sc02b-OMLL1-ril-gps-blobs.zip
gapps-jb-20130301-signed.zip
の順で選択してインストールを行います。後は再起動すると出来上がりです。

なお、このカスタムROMではDocomoのSIMを認識します。

私はデータ通信用のMVNO SIMを使っているので、セルスタンバイ対策のため、アンテナピクトのパッチも当ててます。

パッチ適用後は、アンテナピクトもきちんと表示されてます。

Anatena_pactch

セルスタンバイ対策済みのパッチファイルです。

install.batを実行してください。

「install.bat」をダウンロード

「telephony-common.jar」をダウンロード



| | コメント (0) | トラックバック (0)

2013年5月 8日 (水)

SC-02B に C-RoM Mix を入れる

C-RoM Mix は、android 4.2のカスタムROMです。
CyanogenMod 10.1より使いやすいので入れてみました。

Home

ダウンロードは、以下のURLです。

1)C-RoM mix Galaxy-S Firmware
http://www.xdafileserver.nl/index.php?dir=Samsung%2FGalaxy+S%2FC-RoM+BeaN%2FOld+Versions
http://www.xdafileserver.nl/index.php?dir=Samsung/Galaxy+S/C-RoM+BeaN/

2)GAPPS
http://goo.im/gapps

3)SC-02B kernel
http://goo.im/devs/didhiy/sc-02b_cm-10.1

ダウンロードするファイル

1)から
C-RoM_Mix_v19.zip

2)から
gapps-jb-20130301-signed.zip

3)から
Semaphore_JB_2.9.24sj.zip
sc02b-OMLL1-modem.zip
sc02b-OMLL1-ril-gps-blobs.zip

なお、3)のsc02b-OMLL1-ril-gps-blobs.zipを改変したものを以下のURLからダウンロードしします。
https://docs.google.com/file/d/0B8KJCKOFsibxZVQwVURfel9OUDQ/edit?usp=sharing
ファイル名をsc02b-OMLL1-ril-gps-blobs-C-Rom.zipで保存します。

このファイルの改変内容ですが、
1) /etc/vold.fstabの記述を内臓FlashとSDカードを逆にした
2) 日本語フォント(MTLmr3m.ttf)を入れるようにした
3) GPS設定のangryGps.apkを入れるようにした

となっています。

ちなみに1)は普通のSC-02Bでは不要です。
私のSC-02Bでは、内臓FLashが壊れているので、対策を施しています。

不要な方は、winrarで開いて、vold.fstabを削除し、update-scriptを書き換えてください。

ダウンロードしたらSC-02BのSDカードへコピーしておきます。

インストール手順は、以下の通りです。

1) リカバリーモードに移る
   (電源+音量上+HOMEを同時押し)

2) wipe data/factory reset を実行

3) advanced → wipe dalvik cacheを実行

4) install zip from sdcardを実行、以下の順でインストールします。

1.C-RoM_Mix_v19.zip
2.gapps-jb-20130301-signed.zip
3.Semaphore_JB_2.9.24sj.zip
4.sc02b-OMLL1-modem.zip
5.sc02b-OMLL1-ril-gps-blobs-C-Rom.zip

※インストール順は重要です。
なぜかというと、C-RoM_Mix_v19.zipには、海外版のGalaxyS用のkernelやmodem.binが入っています。C-RoM_Mix_v19.zipを最後にインストールするとせっかくインストールしたものが上書きされることになるので、間違えないようにしてください。

うまくインストールできたらバージョン情報は以下のようになっているはずです。

Info1

Info2

 

なお、上記の通りインストールしても「設定」の「端末情報」の「ベースバンドバージョン」が「不明」と出たり「設定」の「端末情報」の「端末の状態」の「電話番号」が「不明」と出たりすることがあります。

この状態になると登録されているAPNも表示されない現象が出ます。
この場合、再度リカバリーモードに入って、sc02b-OMLL1-modem.zipを再インストールしてください。

■アンテナピクト表示について

b-mobile等のデータ通信専用のSIMではアンテナピクト表示されません。
なので、Google Playからダウンロードした「アンテナピクトβ」で代用しています。
ちなみにアンテナピクトは非表示にすることもできます。
C-RoM SettingsのStatusBarの設定でSiginal StatusをHiddenにします。

■日本語IMEについて
デフォルトでは入っていないので、Google Playから好きなIMEをインストールしてください。
私はPoboxTouch5.1を使用しています。

■気にいっている点
いろいろカスタマイズできます。特にメモリについてカスタマイズできる点が気に入ってます。

Settings1

Settings2

| | コメント (0) | トラックバック (0)

2013年1月18日 (金)

Voosoo VPad V7 android 2.3 アップデート その後

OSを2.3.3にあげた後、再度QPSTでQualcommチップのアップデートに挑戦。

アップデート中のPCの動きを見てみると、なんと、アップデート中に新しいポートが次々と作られる・・・つまり、書き換え中に有効なポートを切り替えながら次から次へとポートを切り替えて
Startボタンを再開する必要があったみたい。

マニュアルには2ポートと記載があったが、2ポートのうち1ポートは使わず、アップデート実行中に生成される新たな2ポートをQPSTConfigurationで追加することで完了した。

ようやく端末情報のベースバンドバージョンに番号の記載が入りました。


| | コメント (3) | トラックバック (0)

2013年1月17日 (木)

Voosoo VPad V7 android 2.3 アップデート

この記事の対象となる製品は、これ。(Voosoo VPad V7)
http://www.voosoo.com.cn/product/gb/productshow.asp?id=1100

中国のサイトをいろいろ読んでいると、http://www.voosoo.com.cn のサイトの中にVPad V7 の2.3 アップデートのファームウェアが提供されているらしい。

以下に記事がある。
http://www.99pad.com/forum.php?mod=viewthread&tid=43773&page=1#pid364361

ファイルをダウンロードすると、アップデートのマニュアルが英語で記載されている。
中を読んでみると、2.3へアップデートするには、以下の2つの作業を行うと記載がある。

1)QPSTにて、クォルコムチップをアップデートする。

2)FastBootモードにて、androidのFirmwareをアップデートする

しかし、マニュアル通りアップデート作業をしても1) で、

Could Not Communicate with Flash Programmer

のエラーが途中で表示され、先に進まない。

それでも2)を実行すると、android 2.3 にアップデートされる。
(SIMが認識されないままの状態ではあるが・・・)

うまくいかない理由は、何が原因なのかよくわからない・・・

| | コメント (0) | トラックバック (0)

2011年12月 6日 (火)

android で USB Bluetoothドングルを試す

手持ちにあるBluetooth USBアダプタは、Bluetooth ver2.1対応 USBアダプタ BT-MicroEDR2X

これがandroidタブレットで使えるか調べてみた。

調べてみようと思ったのは、何故か、EM51にはBluetooth関係のファイルがそろっているからである。

/system/bin/sdptool
/system/bin/bluetoothd
/system/lib/libbluedroid.so
/system/lib/libbluetooth.so
/system/lib/libbluetoothd.so

等々... 出来そうな感じ。しかし・・・

①カーネルにBluetoothドライバモジュールが入っていない

②androidの設定に「Bluetooth」の項目が存在しない。

この2点をクリアしなければならない。

以下からはクリアするために行ったメモ。

①ドライバモジュールの構築

TCC8902のカーネル2.6.29のソースを入手し、モジュールだけビルドした。
sdカードに出来上がったbluetooth.ko, btusb.ko を入れて、adbコマンドで確認

------------------------------------------------------------------
# insmod /sdcard/bluetooth.ko
# insmod /sdcard/btusb.ko
------------------------------------------------------------------

Bluetooth USBアダプタを差し込んでみてdmesgで確認する

# dmesg
------------------------------------------------------------------
<6>Bluetooth: Core ver 2.15
<6>NET: Registered protocol family 31
<6>Bluetooth: HCI device and connection manager initialized
<6>Bluetooth: HCI socket layer initialized
<6>Bluetooth: Generic Bluetooth USB driver ver 0.5
<6>usbcore: registered new interface driver btusb
------------------------------------------------------------------
きちんとロードされてる!

/proc でも確認する。
---------------------------------------------------------------------
# cat /proc/bus/usb/devices | grep -e^[TPD] | grep -e Cls=e0 -B1 -A1
--------------------------------------------------------------------
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=e0(unk. ) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0a12 ProdID=0001 Rev=48.39
---------------------------------------------------------------------
OK。

hciconfigでBluetoothアドレスが有効か確認する。

# hciconfig
---------------------------------------------------------------------
hci0:   Type: USB
        BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0
        DOWN
        RX bytes:0 acl:0 sco:0 events:0 errors:0
        TX bytes:0 acl:0 sco:0 commands:0 errors:0
---------------------------------------------------------------------

まだこの時点では、有効になっていない。起動するには、upを指定する

---------------------------------------------------------------------
# hciconfig hci0 up
---------------------------------------------------------------------

再度hciconfigを実行
---------------------------------------------------------------------
# hciconfig
hci0:   Type: USB
        BD Address: 00:1B:DC:0F:89:4B ACL MTU: 310:10 SCO MTU: 64:8
        UP RUNNING
        RX bytes:354 acl:0 sco:0 events:12 errors:0
        TX bytes:38 acl:0 sco:0 commands:11 errors:0
---------------------------------------------------------------------
UP RUNNING と表示され、bluetoothのアドレスが変化した。
カーネルレベルでは成功している。

ついでに他のデバイスが見えるか確認してみた。
---------------------------------------------------------------------
# hcitool scan
Scanning ...
        6C:23:B9:XX:XX:XX       SO-01B
---------------------------------------------------------------------
近くに置いていたXperiaが表示された。成功。

後は、このモジュールは、/sdcardでは、都合が悪いので、別な場所へコピーしておく
--------------------------------------------------------------------
# cp /sdcard/bluetooth.ko  /system/etc
# cp /sdcard/btusb.ko      /system/etc
-------------------------------------------------------------------

②Bluetoothの有効化

/init.rcスクリプトを調べてみると、bluetoothdサービス起動部分がdisableになっている。

disabledの行をコメントアウトする必要がある。

変更前
--------------------------------------------------------------------------------
service bluetoothd /system/bin/bluetoothd -n
    socket bluetooth stream 660 bluetooth bluetooth
    socket dbus_bluetooth stream 660 bluetooth bluetooth
    # init.rc does not yet support applying capabilities, so run as root and
    # let bluetoothd drop uid to bluetooth with the right linux capabilities
    group bluetooth net_bt_admin misc
    disabled
--------------------------------------------------------------------------------

変更後
--------------------------------------------------------------------------------
service bluetoothd /system/bin/bluetoothd -n
    socket bluetooth stream 660 bluetooth bluetooth
    socket dbus_bluetooth stream 660 bluetooth bluetooth
    # init.rc does not yet support applying capabilities, so run as root and
    # let bluetoothd drop uid to bluetooth with the right linux capabilities
    group bluetooth net_bt_admin misc
#    disabled
--------------------------------------------------------------------------------

しかしルートファイルなので、adbコマンドで直接書き換えが出来ない orz

じゃあ、ファームウェアアップデートファイル update.zip の中のboot.imgファイルを
分解して、ルートファイルの/init.rcを書き換えることにした。

手順)以下のサイトから以下のファイルをダウンロードする。

http://fei-yen.jp/maya/wordpress/2010/08/30/android2-1%E7%AB%AF%E6%9C%AB%E3%82%92%E5%85%A5%E6%89%8B%EF%BC%81%EF%BC%88%E6%9B%B8%E3%81%84%E3%81%A6%E3%82%8B%E9%80%94%E4%B8%AD%E3%81%A0%E3%81%91%E3%81%A9%E5%85%AC%E9%96%8B%EF%BC%89/

split_bootimg.zip
replace_ramdisk.php

zipファイルは解凍して、Linux上で作業する。

書き換え作業は、上記のURLを参考に行う。

Bluetoothの設定は?

andoridの「設定」はファイルSettings.apkが行っている。
これはメーカーのオリジナルのプログラム。
メーカーのSettings.apkのソースをもらわない限り不可能。

でも、androidアプリ SuperBoxでBluetoothの呼び出しが出来る

SuperBoxでBluetoothの設定呼び出しが出来たが、それでもBluetoothは、有効にならない。orz

原因は、下記のサイトを読むとandroidのソースにパッチを当てる必要があった。

http://www.kumikomi.net/archives/2009/09/beagleboardandroid_wii1.php?page=1

AndroidではBluetoothモジュールの電源制御にRF KillというKernelの機能
(Switch Class)を使用している。しかし、Bluetooth USBアダプタは、この仕組みに対応していない。

Bluetoothの電源制御はlibbluedroidライブラリで実施しており,このソース・コードを修正する必要がある。

結局、androidのビルドをしなければならない。orz

| | コメント (0) | トラックバック (0)

2011年12月 3日 (土)

4方向回転を止め、ホームを縦画面固定にする

手順です。

①android.policy.jar をカスタマイズする。

  1) android.policy.jarをSDカードにコピーしてPCへもってくる

    # cp /system/framework/android.policy.jar /sdcard

  2) anroid.policy.jar を android.policy.jar.zipへファイル名変更して、winrarなどで、classes.dexを取り出す。

  3) コマンドプロンプトで、以下を実行。   (baksmali-1.2.6.jarは別途ググってダウンロードしておく)

    d:\EM51> java -Xmx1G -jar baksmali-1.2.6.jar classes.dex

    すると、outフォルダの下に.smaliのファイルが沢山できる。
    これと同じことをSmartQV5のandroid.policy.jarでも同じように実行する。

  4) SmartQV5のPhoneWindowManager.smali を EM51のoutフォルダへ上書きする。

    ※SmartQV5は、Gセンサー搭載しておらず、ホームは縦画面固定になっている。
            つまり自動回転を無視した前提の作りになっている。
            その記述がPhoneWindowManager.java。

  5) 再び、classes.dex を作る。 (smali-1.2.6.jarは別途ググってダウンロードしておく)

    d:\EM51>java -jar smali-1.2.6.jar -o classes.dex out

  6) winrarなどでandroid.policy.jar.zipの中のclasses.dexを上書きする。
     ※apkと違って署名は不要らしい。

  7) android.policy.jar.zip をandroid.policy.jarにファイル名変更する。

  8) adb shell などで、android.policy.jarを /system/framework/へ上書きする。

    # cp /sdcard/android.policy.jar /system/framework

  9) dalvik-cache フォルダの該当 dex を削除する。

    # rm /data/dalvik-cache/system@framework@android.policy.jar@classes.dex

      ※削除したdalvik-cache の該当ファイルは、再度作られる。

② Gセンサーであるライブラリ、sensors.tcc92xx.so を動かないようにリネームする

  c:\> adb shell
  # cd /system/lib/hw
  # mv sensors.tcc92xx.so sensors.tcc92xx.so.org

③) 再起動

| | コメント (0) | トラックバック (0)

2011年11月18日 (金)

EM51のandroidで使えるカーネルモジュールの構築メモ

1) クロスコンパイラのtar.gzをどっかのサイトからダウンロードする

   arm-2008q3-39-arm-none-eabi-i686-pc-linux-gnu.tar.gz

2) そのファイルを/optへ展開する。

$ su
# cd /opt
# tar xvfj /home/mydownload/arm-2008q3-39-arm-none-eabi-i686-pc-linux-gnu.tar.gz

3) 環境変数へセットする

# export PATH=/opt/arm-2008q3/bin/:$PATH
# export ARCH=arm
# export CROSS_COMPILE=arm-none-gnueabi-

4) カーネルのtar.gzを解凍する

# cd ~
# tar xvfz kernel.tar.gz
# cd ./kernel

5) カーネルのモジュールの設定をする。
   *.koが欲しいので、<M>の設定をする。

   以下は、btusb.ko, bluetooth.ko, tun.ko, cifs.ko, nls_utf8.ko の例

# make menuconfig
===========================================================
->  Linux Kernel v2.6.29 Configuration screen
   
Networking support --->
<M>  Bluetooth subsystem support --->
     Bluetooth device drivers --->
       <M> HCI USB Driver

Network device support
<M>   Universal TUN/TAP device driver support 

File systems
--- Network File systems
   <M>   CIFS support (advanced network filesystem, SMBFS successor)
   [*]     CIFS statistics                                          
   [*]       Extended statistics                                    
   [*]     Support legacy servers which use weaker LANMAN security 
   [*]     CIFS extended attributes                                 
   [*]       CIFS POSIX Extensions                                 
   [*]     Enable additional CIFS debugging routines               
   [*]     CIFS Experimental Features (EXPERIMENTAL) 

Navive Language support
   <M>  NLS UTF-8   
===========================================================
他はデフォルトのままにする。

6) MakefileのEXTRAVERSION は空白にしておく

# vi Makefile
---------------------------------------------------------
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 29
EXTRAVERSION =
----------------------------------------------------------

7) コンパイルする

# make modules ARCH=arm CROSS_COMPILE=arm-none-eabi-

8) 以下のファイルが出来上がる

./kernel/drivers/bluetooth/btusb.ko
./kernel/net/bluetooth/bluetooth.ko
./kernel/drivers/net/tun.ko
./kernel/fs/cifs/cifs.ko
./kernel/fs/nls/nls_utf8.ko

| | コメント (0) | トラックバック (0)

EM51のsystem.img

EM51のsystem.imgの扱いメモ

Q)解凍するには?
A) unyaffsを実行します。

# unyaffs system.img

Q)弄った後作るには?
A) mkyaffs2imageを実行します

# mkyaff2image system system.img

(systemは解凍した時に作成したディレクトリ)

「mkyaffs2.tar.gz」をダウンロード

| | コメント (0) | トラックバック (0)

«EM51 android 2.1 のカスタムファーム