ページ

2014年12月25日木曜日

肉の薫製作り

薫製箱をプレゼントされてから薫製作りに凝るようになった。薫製は庭でするものと考えて、屋外用のガスバーナーを購入したのだが、薫製には弱火でないと一瞬のうちに木材チップが煙になって消えてしまう。かと云って弱火にすると少しの風でもガスの火が簡単に消えてしまう。だから室内のガスコンロで薫製を作るのが一番簡単だと気がついた。煙は思っていた程激しいものでは無く換気扇を廻せば対応できるものだったので。とはいえ新築の家などでは止めておいた方がいいかもしれない。

当初は魚、肉、ソーセージ、チーズ、芋などを薫製にしてみたが、味と薫製にかける手間から興味は次第に肉だけに移ってしまった。肉で最初に薫製にしたのが偶然にもイベリコ豚のあばら肉。薫製にすると豚肉がこれほど美味になるのかと驚いたけれど米国豚のあばら肉を薫製にしてみてそれが間違いだという事に気がついた。牛肉や鶏肉は薫製にするよりも普通に焼いた方がおいしいかった。だから最初は豚ロースを薫製に使っていた。もちろん特売品の日本豚です。でも、この薫製ってスーパーで売ってる薫製豚と大差が無いんです。で、最初のスペアリブ豚に戻ってしまいました。でもイベリコ豚のあばら肉ってどこにも売られてないんです。以下は日本豚のあばら肉を使った薫製の話です。

ネット情報から薫製のレシピを収拾して、その通りに作っていたんです。最初に塩と砂糖を2:1の割合で混ぜたものを豚肉にまぶしてジップロックに封印(その際に各種調味料を加える)。そのまま冷蔵庫で一週間ねかせる。冷蔵庫から取り出した肉を塩抜きする(約六時間以上)。肉を半日かけて乾燥させてから、薫製にかける。が、正直云ってまずい。

次のように変更してみました。

塩と砂糖を2:1の割合で混ぜたものを豚肉にまぶしてジップロックに封印(調味料は加えない)。あまり多量の塩を使っても意味ないので軽くまぶす方がいい。数時間で滲み出て来る塩と肉汁を捨てる。三回捨てれば充分。冷蔵庫に寝かせるのは2−3日で充分。

冷蔵庫から取り出した肉を塩抜き。

塩抜き前


塩抜き後


これは最初の塩加減によって三〜十六時間と大差が出るので必ず味見をする必要がある。塩抜き不十分で薫製作りに失敗すると分りますけどね。

塩抜き後、肉をキッチンペーパーでよく乾かします。肉を皿に並べて三温糖(砂糖でもいいかも)をまぶします。この時一緒にブラックペパーなどの調味料を加えます(むしろ薫製直前に加えた方がいいかも)。室温で数時間なじませます。この時にも砂糖汁が出ますので数回捨てます。これを冷蔵庫で1−2日寝かせます。

以上で薫製の準備ができました。肉を薫製箱に並べて60-80度の熱で30分程度乾燥させた後で薫製作業にかかります。木材チップはサクラかヒッコリーを使っています。薫製時間は3時間。これで砂糖味スペアリブ薫製が出来上がり。

●仕込みの最初の塩と砂糖を2:1の割合で混ぜたものを豚肉にまぶす作業をズルして塩だけでも構いませが塩味ばかりでまろやかさが欠けた出来になります。岩塩でも天然塩でも工業塩でも同様の傾向です。

●仕込みの最初に胡椒などの調味料を加えても意味ありません。塩抜き作業で味がどこかに消えてしまいます。

●最初の仕込みとして肉を酒に漬けて柔らかくするのは止めておいた方がいいです。柔らかくなりませんし肉に酒の香りが残ってしまうので、酒が苦手な人には食べられない結果になるでしょう。

●最初の仕込みとして肉をパイナップルに漬けて柔らかくするのはありかもしれません。ただ、漬けこみ時間が問題です。夏場は1時間、冬場でも3時間以上はやらない方がいいかと。漬けすぎると肉ばかりでなく脂肪まで分離してきます。個人的には肉が柔らかくなり過ぎて食感が悪くなると思います。

●塩漬けで冷蔵庫にねかせる期間は一週間という意見が多いようですが、冬場でも三日間あれば充分です。冬場で24時間では塩分がうまく行き渡りません。48時間でなんとか可になり、72時間で充分という意味ていどにご理解いただければ。

●薫製前の肉にオリーブオイルを刷毛で塗ってます。その方が何となく味がよくなるような。

2014年12月24日水曜日

パーコンの故障

半年程前に自作パーコンが壊れました。Core-i7 920, GA-EX58-UD5 マザーボードで、5年程前に組み上げたものです。最初はビデオカード( GTX-480 )の不調でした。ビデオカードのファンの回転音が頻々と異様に激しくなるようになりました。ある日 GTX-480 は動作しなくなってしまったため別のビデオカードに交換しました。すると BIOS 起動時に HDD が接続されていないというメッセージが表示されるようになりました。実際 SATA 接続していた複数の HDD は認識されなくなりました。でも1台だけは不思議にも Windows 7 を立ち上げる事ができたのです。

そのまま3ヶ月ほど経過したある日、そのパーコンを shutdown しすると何だか物の焦げたように臭いがしました。翌日いくら起動ボタンを押してもウントモスンとも云わなくなってました。どうやらマザーボードが死んだようです。ビデオカードの不調を放置していたためにマザーボードの故障を招いてしまったと深く反省する結果になりました。

その後1ヶ月して、今度は別のパーコンが壊れました。 Core-i7 2600K, GA-Z68X-UD3-B3 マザーボードで、4年程前に組み上げたものです。これは起動ボタンを押しても、一瞬だけファンが回転するものの、すぐに動作を停止してしまいます。電源の故障じゃないのかな?と考えて、先に壊れていたパーコンから電源を取り出して交換してみる事にしました。取り出した電源ボックスを開けてみると、中に大量のワタ屑のような埃が詰まっていました。これを綺麗に取り除き Core-i7 2600K マシンの電源と交換しましたところ、無事に起動ボタンに反応して動作を開始するようになりました。

それほど酷使したわけでもないのに4年程で壊れる電源ってどうなってるんでしょう?

今年は本当にいろんな物が壊れて交換が必要になりました。

2014年12月22日月曜日

NaviStudio5

今春まで使っていたカーナビはトヨタ営業所純正ではありながら京阪神方面で、途中で案内を放棄し無言になってしまう事がしばしばありました。また、購入時点からタッチパネルの一部は反応しにくかったんですが、昨秋の点検時にタッチパネルが壊れてますよと云われて、さすがに目が覚めました。メーカー品カーナビにはアンタッチャブルだと。

近所のカーショップで幾つかの条件をテストした製品を探してみました。

(1) 出雲大社まで道案内できる事。これ、やってくれなかったんですよね。
(2) 二階建ての道路で、どの階を走行しているのか認識できる事。
(3) 高速道路に入るインターチェンジを指定できる事。

(3)は目の前にある阪神高速に入りたいのに、中国自動車道へと案内されるというひどい目に遭った経験からです。この条件で満足できるカーナビに付け替えて、古いカーナビは一応たたき壊して下さいとお願いしておきました。

この新しいパイオニアのカーナビ、向こう3年間無料で道路情報の更新データをサーバーマシンからWindowsマシンに接続した 'SD Card' にダウンロードして、カーナビのデータを最新に保てるんです。これまでに数回小規模のアップデータが公開された事がありましたけれど、無事にデータ更新を済ませる事ができました。そして、ついに最初のメージャーアップデートがありました。データ量は8GBほど。それまでと同様の手段でダウンロードしたデータを 'SD Card' に書き込んで行くんですが40%を越えたあたりで必ずエラー発生によりデータを 'SD Card' に書き込み失敗します。

こういう場合は、元データが悪いか 'SD Card' が悪いかに決まってます。でも元データは公開されてから既に1ヶ月以上経過しており、データに問題があれば、すぐに訂正されたはずです。そこで 'SD Card' を交換したり、新品にしたり。でもエラーは続きます。1回のデータダウンロードで、それが失敗したと判明するまでに1時間ほどかかりましたので、20回の失敗で20時間ほど無駄な時間を過ごしました。

ここまでで、ははん、と見当のついた人は偉い!

ふと思いついて 'SD Card Reader' を古い物に交換してみました。これで、エラーは出なくなりました。

この粗悪品の名称は ELECOM MR-A39HWHF1 made in China でした。もっときちんと壊れてくれれば苦労しなくて済んだのに、、、。

2014年12月6日土曜日

戦火の馬

「戦火の馬」という第一次世界大戦を舞台にした映画を観ました。最後の方は時間が無かったのか、それとも物語が尽きたのか、省略があったせいで嘘っぽくなってしまい興醒めする場面もありました。とはいえ馬が重要な戦略品だったのは間違いなかったのです。

政治家達は戦争への危惧に心を奪われ、一方で戦争参加国の首都では一般大衆が宣戦布告を熱狂的に歓迎した。通りを埋め尽くした群衆は叫び、微笑み、そして愛国歌を歌った。セント・ペテルスブルグではフランスの外交官モーリス・パレオローグが冬の宮殿広場への道すがら次のような光景を目撃した。「旗や吹き流しやロシア皇帝のイコンや肖像画を手にした無数の群衆が、ロシア皇帝がバルコニーに登場するや、すぐに全員が膝をついてロシア国歌を歌った。この時、膝をついた数千人の群衆にとって、ロシア皇帝こそ、軍事的・政治的・宗教的な意味で人々の指導者であり、肉体と魂の絶対的支配者、神に指名された真の独裁者だった。」その日は8月2日だった。8月1日にもババリア王国の首都、ミュンヘンのオデオンズプラッツに群衆が集まり、宣戦布告を聞こうとした。その中に若き日のアドルフ・ヒットラーがいた。彼は「その瞬間の熱狂にうち奮えている自分が誇らしかった。それから私は膝をついて、このような時代に自分を生まれさせてくれた神に心よりの感謝を捧げたのだ。」その頃、ベルリンでは、灰色の戦闘服に身を包んだカイザーがバルコニーに現れ、騒然とした群衆に向かって次のように言った。「ドイツに運命の時が訪れたのだ。我が国を狙う国々からドイツ防衛のため我々は立ち上がるのだ。戦いの剣は我々の手に委ねられた。皆に命ずる。教会へ行き、我が軍に神のご加護を祈るのだ。」ベルリン大聖堂では牧師が礼拝に集まった人々に詩編130番の朗唱を主導し、オラニエン通りのシナゴーグではラビが勝利の祈りを主導した。8月5日にはロンドンでも同じような状況が発生した。パリでは東部と北部へ動員される連隊の出発式があった。歩兵連隊の将校は次のように記している。

「午前6時、列車は汽笛を鳴らす事なくゆっくりと駅を出発した。くすぶっている火が突如うなりを上げて火炎を発したかのような壮大などよめきが、幾多の人々の口々からフランス国歌のラ・マルセイエーズの轟が巻き起こった。兵士達は全員が汽車の窓際に立ち帽子を振った。それに応えて線路上から、駅のプラットフォームから、隣の汽車の窓から皆々が手を振った。集まった群衆は全ての駅、柵の向こう側、道路に沿った家々の窓に立っていた。”フランス万歳。軍人さん万歳。”と叫ぶ声が至る所で聞こえ、人々はハンカチや帽子を振っていた。女性達は道行く私達の隊列にキスや花を投げかけてくれた。若者達は”さようなら!またね!”と叫んでいた。」

すぐに多くの若者達に召集令状が届けられた。そのような令状には無縁の予備役兵にも動員命令が出された。大抵の軍隊では出頭予定日までの幾日間は家族や雇い主に別れを告げる「自由日」となっていた。フランスの偉大なる歴史家、リチャード・コッブは次のように書いている。「完璧な異邦人だったんじゃないかな。というのも、パリっ子が全員一夜にして不思議の国のアリスの中の登場人物みたいになっちまってね。異次元のカレンダーの中で日々をトランプに明け暮れていたのさ。”今日は何の日だい?”すると別の奴が”俺は一日目さ(新兵狩りに遭っちゃったみたいさ)。”、”俺は九日目さ(不運だぜ、そん時までにゃ、全てが終わっちまってるだろうから、お前さんにゃ何の楽しみも残らないって寸法さ)。”、”俺は三日目さ。だからあまり長く待たなくてもいいのさ。”、”俺は十一日目さ(お前さんは、そんなに早くベルリンを落せやしまい)。” ドイツ軍の予備役士官候補生は、どのようにして入隊までの日々を過ごすのかを、もっと散文的に説明している。その人物はアントワープ在住のビジネスマンで、彼が動員二日目に最寄りの野戦砲兵連隊に出頭し上申しなければならない内容とは次のようなものでした。

八月三日に自分がブレーメンに到着した時、家族は半狂乱でした。それは彼らがベルギーが陥落し私が銃弾に倒れたものと思っていたからでした。八月四日、予備役兵として軍に出頭した時、自分は予備の野砲第18連隊に所属しているのだと告げられました。その連隊はハンブルグから約75マイルの距離にあるベーレンフェルドにありました。家族は自分達の集合場所の建物に近寄る事はできませんでした。自分はできるだけ素早く、近くの子供に家族への伝言を託しました。家族は列車の駅のプラットホームにも立ち入る事が出来ませんでした。ただ、自分達に葉巻や煙草やキャンディーを手渡す赤十字の職員を除いては。兵員輸送列車の中でボートやテニスを一緒にやった友人達と再会する事が出来て幸運でした。八月六日、自分が今まで着た事のない灰色の制服が支給されました。その色は緑色を帯びた灰色で、くすんだ色のボタンが付けられていました。ヘルメットには灰色の布が被せられていました。それはヘルメットの上にある飾りが太陽の光を反射させないようにするための処置でした。長い騎乗靴は茶色で大変に重いものでした。兵士は全員、大抵の将校も予備役でしたが、司令官は正規の将校でした。たたき上げ将校は全員正規兵でしたが、兵馬は予備役でした。馬主は、狩猟家やサラリーマンや農民でしたが、彼らは定期的にそれを報告する義務があり、軍はいつでも、どこにどんな馬がいるのかを把握していたのです。

人間と同様に馬も八月の最初の一週間でヨーロッパ中から何十万頭という数がかき集められていました。小規模とされる英国の陸軍ですら、騎兵用、野砲の牽引馬、あるいは兵員輸送用の荷馬車のために165,000頭の馬が集められたのです。オーストリア軍は600,000頭、ドイツ軍は715,000頭、ロシア軍に至っては24の騎兵師団に100万頭を超える馬が集められたのです。1914年当時の軍隊というものは、ナポレオンの頃と同程度に兵馬を必要としていたのです。担当将校達は馬と兵士の必要割合を兵士3人に対して馬1頭程度と算出していました。第12ブランデンブルグ近衛連隊の予備役将校だったウォルター・ブルームはシュッツガルトへの動員命令を受け取ると、フランス国境のメッツ行きの汽車で荷物を発送する前に「トランクと茶色の雑嚢と馬具類の入った2個の箱に”軍需用荷物・速達”と書かれた赤いラベルを貼付け」て彼の所有する2頭の馬用に出来る限りの荷物を鞄に詰め込んだのです。

列車は1914年に戦争に行った全ての人々の記憶に刻まれているものでした。ドイツ参謀本部の鉄道部門は動員令の頃には11,000台の列車の時刻表を作成し、8月2日から18日の間だけでもライン川に架かるホーエンゾレルン橋を最低でも54両編成の貨車2,150台が通過しました。フランスの主要な鉄道会社、Nord, Est, Quest, PLM, POMは1912年5月以後、兵員動員のために7,000両の列車を用意する計画がありました。戦争開始に向けて多くの物が列車で集められたのです。

ムランからパリに入ってきた旅行者は、動力部を外され空になって動かない列車の異様な光景に目を奪われたものだ。時としてそれは様々な貨車を連結したものだったりしたのだが、別の会社の貨車が連結されていたりしており、旅客用貨車は護衛用貨車に連結され、それら多くの貨車に横にはチョークで印が描かれていたが、その全旅程セーヌ川からマルヌ川の県庁所在地を経て列車がリヨン駅に近づくまで、ひたすら我慢しなければならなかった。同じように奇妙な光景はフランス北部の旅行者達に目撃されている。それはクレール駅にある無数の側線に煙を上げる事も無く停車させられた何百ともつかぬ機関車の姿だった。

そのような列車が長く放置されているわけがありませんでした。すぐに列車は動きだして何十万人もの若者を詰め込み、時速10から20マイルで走行し退屈な距離を進んだかと思えば不意に停車し、最前線の少し後方まで彼らを運んだのです。久しい以前から準備されていたもののようで、前線の眠ったような村々の駅にしてはそのプラットフォームの長さが1kmほどもあり、平和な時代の人々の流れを考えても、とてもその長大さを説明できるものではなかった。

いよいよ戦火の火ぶたが切られ、騎馬兵が最新兵器の機関銃の前で次々と倒されてゆくと、彼らは戦争の主役から消えてしまいました。替わって登場したのは大砲と塹壕でした。

2014年12月5日金曜日

Old iPhone 4S

3年間使っていたスーマートフォン 'au iPhone4S' を下取りに出して 'au iPhone 6+' に機種変更しようと予定していたんだけど、auに予約して2ヶ月経過しても製品入荷がありません。しびれが切れたのでアップルストアに 'SIM Free iPhone6+' を発注したら1週間で製品が届けられました。この'iPhone6+'を持ってauで契約する予定だったんだけれど、音声通話はほとんどしないしWiFiばかりでLTEデータ通信すら滅多にしないという条件では、月々八千円も請求されるキャリアーとの契約料金はあまりにも高額過ぎるんです。MVNO ってんですか、スマートフォン用に低料金で通信契約できるサービスがある事に気がついたのはそんな頃でした。インターネットプロバイダーとして有名な 'iij' の関連会社なんでしょうね、MVNOに 'iijmio' って会社があり、月額1600円で 'iPhone 6+' が使える事がわかり、契約先を 'au' から 'iijmio' に MNP転出しました。

'iijmio' から送られてきた封書には 'SIM' が入っていて、それを 'iPhone6+' に入れると音声通話ができるようになり、さらに指示書の通りに 'APN' を'iPhone6+' にインストールするとデータ通信もできるようになりました。ただ、いつもはデータ通信オフにして WiFi だけでインターネットに接続していたのでちょっとクセがある事に気づくのが送れました。「設定」->「モバイルデータ通信」をオンにすると自動的に 'LTE' 設定もオンになるのですが、'iPhone6+'画面左上のアンテナ表示が 'DOCOMO 3G' のままで変わらないんです。自動的に変わる人もいるのかもしれませんけれどね。最後に 'iPhone6+' の電源をオフにして再起動するとアンテナ表示が 'DOCOMO 3G' から 'DOCOMO LTE' に変わる事に気づきました。

さて残された 'au iPhone4S' をどうしようか? 'au' の 'SIM' ロックがかけられているので'au' 以外の 'SIM' は使えないんです。インターネットで調べてみたら 'iPhone4S' だけ 'SIM' ロック解除できるハードウェアが中国で造られてるんですね。'SIM' ロック解除できない偽物ハードウェアもありましたけれど 'GPP'下駄は iOS8.1 でも無事に 'SIM' ロック解除できました。'AX050 SIM' は 'KingMobile'下駄じゃ iOS 8.0 以後は 'SIM' ロック解除不可能だとの話なので 'GPP' 下駄を購入しなおしたのに、'iijmio' から送られてきた音声 'SIM' は何でもOKの 'DN050 SIM' でした。スマートフォン二台持ちでも料金は大手キャリアーよりまだまだ安い。

携帯電話大手キャリアーは安心して使えるけれど格安携帯電話会社はいつ使えなくなるか不安だと云う人は、自分の明日を誰かが保証してくれると思ってるんでしょうねぇ。あっ、そりゃきっと大手キャリアーがサクラ記事書かせてる人だわ。

2014年11月19日水曜日

囲い込み

日本における囲い込み(かこいこみ:enclosure)とは
携帯電話3社によるユーザーを自社に縛り付ける目的で行われた販売戦略の事。歴史的に繰り返し行われてきたが、現在までに2度のプロセスが確認される。まず、携帯電話以前の時代に国内電話で名を馳せた「日本とっても飛ばせる(NTT)社」。同じ頃海外電話で名を馳せた「海外どうどういけてる(KDDI)社」。そして新興の「そんなにボルの(SB)社」である。

第一次囲い込みは3社の値引き主導で行われたのに対し、第二次囲い込みはユーザー2年縛りで行われた。

●第一次囲い込み
携帯電話はまず国有会社を前身とするNTTがほとんど独占的な地位でサービスを開始した。そこに待ったをかけたのがKDDIで2社は値引き戦略でユーザーを取り込もうとしたが、悲しいかな、お互いボンボン育ちで決定打に欠けた戦略した持ち合わせなかった。そこへ殴り込みをかけたのが、あざとい商売で成り上がった新興のSB社。三つどもえで値引き戦略は携帯機種代金が0円までに至り戦略は行き詰まりを見せたかにみえた。
各社ともインターネット接続を謳ってはいたがそれは嘘だった。単にメール機能が使えるという事と自社の有料サイトへの誘導の2点でしかインターネットを使えなかったからだ。何故ウェブサイトを閲覧できる機能を持った携帯電話が開発されなかったのか不思議なのだが、そこまで突っ込むのはやぶさかというものだろう。
日本でウェブサイトを閲覧できる機能を持った携帯電話が開発されないまま足踏みしていた頃、米国ではオレンジ社が「いっぱつ電話(iPhone)」を開発していた。それはかつてオレンジ社が「ニート」という通信機能を持った小型コンピュータで苦い失敗をした経験から、携帯電話の中にコンピュータを組み込みインターネット接続できる製品に仕上がっていた。そしてその販売戦略として携帯機種代金2年払い+契約2年縛り+違約金という手法を導入した。

●第二次囲い込み
このオレンジ社が日本に「いっぱつ電話」を売り込んだ先がSB社。その際に「携帯機種代金2年払い」の方がどういうわけだか、携帯機種代金実質無料なる意味不明の言葉が開発された。「いっぱつ電話」人気にあやかりSB社は他の2社からユーザーを奪い続けた。KDDI社は慌てたように「いっぱつ電話」の導入を企った。KDDI社が導入した際に、どういうわけだか、契約2年縛りが契約永久縛り(地獄縛りとも云う)に変更され契約後2年経過しても契約解除が自動的に出来なくなった。そればかりか違約金も継続して発生する仕組みに変更された。囲い込みの手法はこれ以外にも固定電話やタブレット端末にまで及ぶようになった。これを昔の人はこう言い習わした「タダ程高いものはない」。

ユーザーが羊の群と同様に囲い込まれてしまうのか、それとも自由を求めて脱出を試みるのかは今後の話。

2014年11月18日火曜日

スマートフォンの不思議

それまでガラケー(cell phone)を使っていたけれど、ソフトバンクから日本で初めて発売された iPhone 3G (8G) を入手したのがスマートフォン(smart phone)の最初。機種代金がタダになるような話だったけれど、月々の通信料が約6000円に加えて、機種代金を3000+円徴収され約月額9000円。2年間合計で機種代金だけで7万円ほどかかった。当時は2年しばりといっても2年経過した後に契約期間のしばりは無く違約金など発生しなかった。

次に何となく AU iPhone 4S (32G) を入手した。この時は機種代金を一括で支払ってその金額8万円+也。最初の2年間は値引きとかで通信料が月々6000円ほどだったけれど、2年後の契約解除を忘れてしまい、気がついてみれば2年と2ヶ月。さらに値引きが無くなり月々の通信料が8000円に迫る金額になりました。電話は月に2回ほど各1分間でインターネット通信は月に100MB以下の使い方ではいくら何でも無駄使いですよね。さらにスマートフォンと同時なら iPad Air (AU) の契約が割引になるからと、その契約もしちゃったんですよ。これは恐ろしい落とし穴になっているんです。

それに気がついたのは AU iPhone 4S の契約を解除した時の事。
「契約後3年経過してるから違約金は無しですよね?」
「いーえ、違約金1万円いただきます。」
絶句。この時に初めて違約金2年縛り地獄に気がついた。
「iPhone の契約解除したら iPad Air の割引は無くなるんですよね。」
「そりゃそうですよ。」
「それ月々どれくらいの値段になるんですかね?」
「さて、調べてみないとわからないけど、月に8000円ほどかな?」
「えっ?それなら iPad も契約解除します。」
「それでは iPad の違約金も1万円いただきます。」
「えー?携帯電話じゃないのに?」

つまり、iPhone と iPad の契約開始が2年という同期がとれていない限り、必ずどちらかの違約金が発生する仕掛けになっているんです。昔、東京でボッタクリバーに入ってしまい有り金残らず巻き上げられた事がありましたけれど、それに匹敵する出来事でしたよ。

もうキャリアーがやってるスマートフォンはこりごりです。SIM-Free iPhone 6+ 機種代99000円。これで格安?携帯電話会社のSIMを利用するようになってやっと落ち着きました。

2014年9月22日月曜日

4TB hard drive and GA-Z68X-U3DH-B3 firmware update from BIOS to UEFI

ある日 solid state drive (SSD) を購入するつもりでショップへ入ったら 4TB の hard drive が SSD と同じような価格で陳列されていました。よせばいいのに、ついフラっと 4TB hard drive を購入したのです。これが運のツキでした。Windows7 の稼動しているマシンに接続してみると、いつもと勝手が違っています。いつもなら初期化なんてしなくても認識してくれたハズなのに、何故か 1.8TB でパーティションしろとメッセージが、、、。なんとなくパーティションして NTFS でフォーマットかけてしまいました。どうやっても 4TB を認識してくれません。

これは何か変だとやっと気がつきました。ネットで調査したら BIOS 起動の Windows の HDD(NTFS) では 2TB までしか認識できないのね。Mac OSX では大昔に HDD 容量制限は事実上なくなっていたので完璧に不意をつかれました。では、BIOS 起動の OSX86 ではどうなのか?当然ですが、2TB までしか認識しませんでした。何しろ使っているマザーボード (GA-Z68X-U3DH-B3)が古かったようです。ウィンドウズの世界って変化が激しすぎてついていけません。問題解決には BIOS を UEFI という物にアップデートしないといけません。そのためには USBメモリーに Bootable DOS システムを作成する必要があるとか。しかも 2GB 以下の容量のUSBメモリーでないといけないらしい。これが無いのです。どこの店を探しても4GB以上のUSBメモリーしか置いていない。変化が激しくて、、、

2GB microSD card を見つけることができたので、それを使って Bootable DOS システムを作成しました。Gigabyte から U1L(UEFI BIOS) というファイルをダウンロードして解凍すると update_uefi というフォルダの中に autoexec, FLASHEFI, Z68XUD3H.U1l という3個のファイルがあるので、それを Bootable DOS システムを作成した UBSメモリーの中にコピーします。

そして作成した USBメモリーをブートドライブに指定して起動させると BIOS から UEFI への書き換えをやってくれます。この辺りはここが参考になりました。

簡単に書いてますけど、やってる最中には胸ドキドキですね。で肝心の hard drive は 1.8TB partion のまま、MacOSX の DiskUtility で NTFS から GPT format に変更していました。これを UEFI 起動した Windows7 でいじって何とか 4TB RAW Volume に復帰できました。RAW という表示は初めて見ましたけれど、要するに Windows じゃ認識できないという意味らしいです。

さて、次に OSX86 10.7.5 Lion を起動させてみると BIOS boot では問題なかったんですけれど UEFI boot では kernel panic をきたして起動不能になっていました。BIOS から UEFI への書き換えに失敗したに違いないと思いましたが、考えてみれば Windows7 は順調に起動、いや BIOS の頃と比べると起動時間が随分と短縮しています。それに MultiBeast boot までは問題なく動作しています。そこから MacOSX に起動プロセスが移ってすぐに kernel panic となっているので、問題は OSX86 10.7.5 drive 上のファイルにある事になります。OSX に問題はないでしょうから 86 部分、つまり /Extra/ 以下に問題がある事になり、/Extra/DSDT.aml を削除すると kernel panic が発生しなくなりました。

これでやっと 4TB hard drive を使う準備が整いました。

2014年8月4日月曜日

KINIVO USB bluetooth dongle BTD-400 in OSX 10.5.8 Leopard

最近販売されている USB bluetooth アダプター が OSX 10.5.8 で使えるのかどうか試してみました。KINIVO BTD-400 Ver. 4.0 という製品は、2012年製添付文書によれば対応OSは Windows8, Windows7, Vista, Xp となっていて OSX には対応していません。ですから、このアダプターを PowerMac G5 の USB 端子に差し込んでみても認識されません。ただし、OSX 10.8.5 ならば何もしなくても認識されますよ。



そこで前回やった kext の Info.plist の書き換えをします。するとうまく認識されて使えるようになります。ただどの程度使えるのかは試してみないと分らない。



productID=0x21e8(8680)
vendorID=0x0a5c(2652)

という認識で書き換えた Info.plist では MediaLink BT4.0 adapter と同じになっています。

これを Apple wireless keyboard 2011, magic mouse で使ってみました。ペアリングは簡単にできました。再起動してもマウスやキーボードを自動的に認識します。ですので通常の使用には問題ありません。しかし、スリープからの復帰は不可でした。HID Proxy 非対応ですね。「コマンドキー+S」や「オプション起動」はできません。

余談ながら、KINIVO BTD-400 を X86 OSX 10.7.5 で使ってみました。本例と同様の Info.plist の書き換えしないと認識されません。使っていて kernel panic が2回ありました。一度コンピューター本体の電源を切ってから起動してみると kernel panic をきたさなくなりました。

この KINIVO BTD-400 Ver. 4.0 と同等の製品があります。



I-O DATA の USB-BT40DLE です。そもそも使われているチップが KINIVO BTD-400 同じ Broadcom製で同一の productID と venderID を持っています。使っている側からは、この2製品は同じ製品に見えます。通常の使用には問題ありませんがスリープからの復帰は不可で HID Proxy 非対応です。まあ、いずれの製品にしても OSX 非対応なのに OSX 対応を謳った製品の方が使えないという皮肉な結果になりました。

2014年7月26日土曜日

Belkin USB bluetooth dongle F8T016 in OSX 10.5.8 (Leopard)

Belkin USB bluetooth dongle F8T016 を Mac OSX 10.5.8 (Leopard) で使ってみると、Option 起動は可能、コマンド+S 起動も可能、スリープからの復帰も可能ながら「Bluetooth デバイスがスリープを解除することを許可」にチェックが入らないという問題です。問題にしなくても放置しておいても実用的には何の問題もありません。同じ dongle を Mac OSX 10.8.5 (Mountain Lion) でやってみるとチェックが入るのは確認できていましたから、Mountain Lion の書式を真似して Leopard にパッチを当てればいいのでしょう。

その場所は "/System/Library/Extensions/IOBluetoothFamily.kext/Contents/Plugins/BroadcomUSBBluetoothHCIController.kext/Contents/Info.plist" にあります。そのInfo.plistの内容です。

●これは OSX 10.5.8 (Leopard) の Info.plist を Property List Editor による一部表示です。



●そしてこちらは OSX 10.8.5 (Mountain Lion) の Info.plist を Property List Editor による一部表示です。一見して分るのは項目数が増えている事です。



これは OSX 10.8.5 (Mountain Lion) のInfo.plist の中の belkin USB dongle F8T016 の定義部分です。一番上の行の右側にある <> は明らかにゴミなので削除して下さいね。



この定義部分を"PASTE HERE !!!" の部分にペーストします。以前にペーストする場所を "Microsoft Bluetooth 2.0 USB Dongle" の下に置いてみたら動作しなかったので、上にしておいた方がいいかと思います。

ただし、Mountain Lion と Leopard ではその記述に若干の違いがあるので、ペーストしたものを一部 OSX 10.5.8 用に修正します。



これは OSX 10.5.8 (Leopard) にパッチ後のProperty List Editor による表示です。ついでですから Belkin 以外にも IOGear や MediaLink の定義も追加してみました。



最終的に、システム環境設定のBluetoothの詳細設定で、うまく「Bluetooth デバイスがスリープを解除することを許可」にチェックが入るようになりました。



ただ Belkin USB bluetooth dongle F8T016 といってもバージョン違いがあるらしく、F8T016ng という製品を使いました。F8T016ne でもOKらしいとはネット上の情報です。分らないのはパッケージのどこを探しても ng やら ne などの表記がされていない事です。

2014年7月14日月曜日

Power Mac G5 OSX 10.5.8 用 Apple wireless keyboard 2009 B JIS用差分

 <key>Wireless Keyboard 2009 B ANSI</key>
        <dict>
            <key>BatteryDangerouslyLowNotificationType</key>
            <integer>1802527086</integer>
            <key>BatteryLowNotificationType</key>
            <integer>1701538927</integer>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.IOBluetoothHIDDriver</string>
            <key>DisconnectionNotificationType</key>
            <integer>1701536883</integer>
            <key>ExtendedFeatures</key>
            <dict>
                <key>BatteryPercent</key>
                <dict>
                    <key>id</key>
                    <integer>71</integer>
                    <key>max</key>
                    <integer>100</integer>
                    <key>min</key>
                    <integer>0</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>BatteryState</key>
                <dict>
                    <key>id</key>
                    <integer>48</integer>
                    <key>max</key>
                    <integer>2</integer>
                    <key>min</key>
                    <integer>0</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>0</integer>
                </dict>
                <key>DeviceName1</key>
                <dict>
                    <key>id</key>
                    <integer>81</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName2</key>
                <dict>
                    <key>id</key>
                    <integer>82</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName3</key>
                <dict>
                    <key>id</key>
                    <integer>83</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName4</key>
                <dict>
                    <key>id</key>
                    <integer>84</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceNameChange</key>
                <dict>
                    <key>id</key>
                    <integer>80</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>FactoryDefault</key>
                <dict>
                    <key>id</key>
                    <integer>69</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>FullFactoryDefault</key>
                <dict>
                    <key>id</key>
                    <integer>68</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>LongDeviceName</key>
                <dict>
                    <key>id</key>
                    <integer>85</integer>
                    <key>size</key>
                    <integer>64</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>RecantConnection</key>
                <dict>
                    <key>id</key>
                    <integer>65</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>UserMode</key>
                <dict>
                    <key>id</key>
                    <integer>67</integer>
                    <key>max</key>
                    <integer>3</integer>
                    <key>min</key>
                    <integer>1</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>WillShutdown</key>
                <dict>
                    <key>id</key>
                    <integer>64</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
            </dict>
            <key>GetReportTimeoutMS</key>
            <integer>3500</integer>
            <key>HIDDefaultBehavior</key>
            <string></string>
            <key>IOClass</key>
            <string>IOAppleBluetoothHIDDriver</string>
            <key>IOProbeScore</key>
            <integer>1000</integer>
            <key>IOProviderClass</key>
            <string>IOBluetoothL2CAPChannel</string>
            <key>PSM</key>
            <integer>17</integer>
            <key>ProductID</key>
            <integer>597</integer>
            <key>SetReportTimeoutMS</key>
            <integer>3500</integer>
            <key>VendorID</key>
            <integer>1452</integer>
        </dict>
        <key>Wireless Keyboard 2009 B ANSI Map</key>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.AppleHIDKeyboard</string>
            <key>CapsLockDelay</key>
            <integer>75</integer>
            <key>DeviceUsagePairs</key>
            <array>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>6</integer>
                    <key>DeviceUsagePage</key>
                    <integer>1</integer>
                </dict>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>7</integer>
                    <key>DeviceUsagePage</key>
                    <integer>1</integer>
                </dict>
            </array>
            <key>FnFunctionUsageMap</key>
            <string>0x0007003a,0xff010021,0x0007003b,0xff010020,0x0007003c,0xff010010,0x0007003d,0xff010004,0x00070040,0x000C00B4,0x00070041,0x000C00CD,0x00070042,0x000C00B3,0x00070043,0x000C00E2,0x00070044,0x000C00EA,0x00070045,0x000C00E9</string>
            <key>FnKeyboardUsageMap</key>
            <string>0x00070050,0x0007004a,0x00070052,0x0007004b,0x0007002a,0x0007004c,0x0007004f,0x0007004d,0x00070051,0x0007004e,0x00070028,0x00070058</string>
            <key>FnModifierUsage</key>
            <integer>3</integer>
            <key>FnModifierUsagePage</key>
            <integer>255</integer>
            <key>HIDDefaultBehavior</key>
            <string>Keyboard</string>
            <key>IOClass</key>
            <string>AppleEmbeddedKeyboard</string>
            <key>IOProviderClass</key>
            <string>IOHIDInterface</string>
            <key>NumLockKeyboardUsageMap</key>
            <string>0x00070029,0x00070029,0x0007002a,0x0007002a,0x0007002b,0x0007002b,0x0007003a,0x0007003a,0x0007003b,0x0007003b,0x0007003c,0x0007003c,0x0007003d,0x0007003d,0x0007003e,0x0007003e,0x0007003f,0x0007003f,0x00070040,0x00070040,0x00070041,0x00070041,0x00070042,0x00070042,0x00070043,0x00070043,0x00070044,0x00070044,0x00070045,0x00070045,0x0007004a,0x0007004a,0x0007004b,0x0007004b,0x0007004c,0x0007004c,0x0007004d,0x0007004d,0x0007004e,0x0007004e,0x0007004f,0x0007004f,0x00070050,0x00070050,0x00070051,0x00070051,0x00070052,0x00070052,0x0007000d,0x00070059,0x0007000e,0x0007005a,0x0007000f,0x0007005b,0x00070018,0x0007005c,0x0007000c,0x0007005d,0x00070012,0x0007005e,0x00070024,0x0007005f,0x00070025,0x00070060,0x00070026,0x00070061,0x00070010,0x00070062,0x00070037,0x00070063,0x00070082,0x00070082,0x000700e0,0x000700e0,0x000700e1,0x000700e1,0x000700e2,0x000700e2,0x000700e3,0x000700e3,0x000700e4,0x000700e4,0x000700e5,0x000700e5,0x000700e6,0x000700e6,0x000700e7,0x000700e7</string>
            <key>ProductID</key>
            <integer>597</integer>
            <key>StandardType</key>
            <integer>0</integer>
            <key>VendorID</key>
            <integer>1452</integer>
            <key>alt_handler_id</key>
            <integer>43</integer>
        </dict>
        <key>Wireless Keyboard 2009 B ISO</key>
        <dict>
            <key>BatteryDangerouslyLowNotificationType</key>
            <integer>1802527086</integer>
            <key>BatteryLowNotificationType</key>
            <integer>1701538927</integer>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.IOBluetoothHIDDriver</string>
            <key>DisconnectionNotificationType</key>
            <integer>1701536883</integer>
            <key>ExtendedFeatures</key>
            <dict>
                <key>BatteryPercent</key>
                <dict>
                    <key>id</key>
                    <integer>71</integer>
                    <key>max</key>
                    <integer>100</integer>
                    <key>min</key>
                    <integer>0</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>BatteryState</key>
                <dict>
                    <key>id</key>
                    <integer>48</integer>
                    <key>max</key>
                    <integer>2</integer>
                    <key>min</key>
                    <integer>0</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>0</integer>
                </dict>
                <key>DeviceName1</key>
                <dict>
                    <key>id</key>
                    <integer>81</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName2</key>
                <dict>
                    <key>id</key>
                    <integer>82</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName3</key>
                <dict>
                    <key>id</key>
                    <integer>83</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName4</key>
                <dict>
                    <key>id</key>
                    <integer>84</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceNameChange</key>
                <dict>
                    <key>id</key>
                    <integer>80</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>FactoryDefault</key>
                <dict>
                    <key>id</key>
                    <integer>69</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>FullFactoryDefault</key>
                <dict>
                    <key>id</key>
                    <integer>68</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>LongDeviceName</key>
                <dict>
                    <key>id</key>
                    <integer>85</integer>
                    <key>size</key>
                    <integer>64</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>RecantConnection</key>
                <dict>
                    <key>id</key>
                    <integer>65</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>UserMode</key>
                <dict>
                    <key>id</key>
                    <integer>67</integer>
                    <key>max</key>
                    <integer>3</integer>
                    <key>min</key>
                    <integer>1</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>WillShutdown</key>
                <dict>
                    <key>id</key>
                    <integer>64</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
            </dict>
            <key>GetReportTimeoutMS</key>
            <integer>3500</integer>
            <key>HIDDefaultBehavior</key>
            <string></string>
            <key>IOClass</key>
            <string>IOAppleBluetoothHIDDriver</string>
            <key>IOProbeScore</key>
            <integer>1000</integer>
            <key>IOProviderClass</key>
            <string>IOBluetoothL2CAPChannel</string>
            <key>PSM</key>
            <integer>17</integer>
            <key>ProductID</key>
            <integer>598</integer>
            <key>SetReportTimeoutMS</key>
            <integer>3500</integer>
            <key>VendorID</key>
            <integer>1452</integer>
        </dict>
        <key>Wireless Keyboard 2009 B ISO Map</key>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.AppleHIDKeyboard</string>
            <key>CapsLockDelay</key>
            <integer>75</integer>
            <key>DeviceUsagePairs</key>
            <array>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>6</integer>
                    <key>DeviceUsagePage</key>
                    <integer>1</integer>
                </dict>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>7</integer>
                    <key>DeviceUsagePage</key>
                    <integer>1</integer>
                </dict>
            </array>
            <key>FnFunctionUsageMap</key>
            <string>0x0007003a,0xff010021,0x0007003b,0xff010020,0x0007003c,0xff010010,0x0007003d,0xff010004,0x00070040,0x000C00B4,0x00070041,0x000C00CD,0x00070042,0x000C00B3,0x00070043,0x000C00E2,0x00070044,0x000C00EA,0x00070045,0x000C00E9</string>
            <key>FnKeyboardUsageMap</key>
            <string>0x00070050,0x0007004a,0x00070052,0x0007004b,0x0007002a,0x0007004c,0x0007004f,0x0007004d,0x00070051,0x0007004e,0x00070028,0x00070058</string>
            <key>FnModifierUsage</key>
            <integer>3</integer>
            <key>FnModifierUsagePage</key>
            <integer>255</integer>
            <key>HIDDefaultBehavior</key>
            <string>Keyboard</string>
            <key>IOClass</key>
            <string>AppleEmbeddedKeyboard</string>
            <key>IOProviderClass</key>
            <string>IOHIDInterface</string>
            <key>NumLockKeyboardUsageMap</key>
            <string>0x00070029,0x00070029,0x0007002a,0x0007002a,0x0007002b,0x0007002b,0x0007003a,0x0007003a,0x0007003b,0x0007003b,0x0007003c,0x0007003c,0x0007003d,0x0007003d,0x0007003e,0x0007003e,0x0007003f,0x0007003f,0x00070040,0x00070040,0x00070041,0x00070041,0x00070042,0x00070042,0x00070043,0x00070043,0x00070044,0x00070044,0x00070045,0x00070045,0x0007004a,0x0007004a,0x0007004b,0x0007004b,0x0007004c,0x0007004c,0x0007004d,0x0007004d,0x0007004e,0x0007004e,0x0007004f,0x0007004f,0x00070050,0x00070050,0x00070051,0x00070051,0x00070052,0x00070052,0x0007000d,0x00070059,0x0007000e,0x0007005a,0x0007000f,0x0007005b,0x00070018,0x0007005c,0x0007000c,0x0007005d,0x00070012,0x0007005e,0x00070024,0x0007005f,0x00070025,0x00070060,0x00070026,0x00070061,0x00070010,0x00070062,0x00070037,0x00070063,0x00070082,0x00070082,0x000700e0,0x000700e0,0x000700e1,0x000700e1,0x000700e2,0x000700e2,0x000700e3,0x000700e3,0x000700e4,0x000700e4,0x000700e5,0x000700e5,0x000700e6,0x000700e6,0x000700e7,0x000700e7</string>
            <key>ProductID</key>
            <integer>598</integer>
            <key>StandardType</key>
            <integer>1</integer>
            <key>VendorID</key>
            <integer>1452</integer>
            <key>alt_handler_id</key>
            <integer>44</integer>
        </dict>
        <key>Wireless Keyboard 2009 B JIS</key>
        <dict>
            <key>BatteryDangerouslyLowNotificationType</key>
            <integer>1802527086</integer>
            <key>BatteryLowNotificationType</key>
            <integer>1701538927</integer>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.IOBluetoothHIDDriver</string>
            <key>DisconnectionNotificationType</key>
            <integer>1701536883</integer>
            <key>ExtendedFeatures</key>
            <dict>
                <key>BatteryPercent</key>
                <dict>
                    <key>id</key>
                    <integer>71</integer>
                    <key>max</key>
                    <integer>100</integer>
                    <key>min</key>
                    <integer>0</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>BatteryState</key>
                <dict>
                    <key>id</key>
                    <integer>48</integer>
                    <key>max</key>
                    <integer>2</integer>
                    <key>min</key>
                    <integer>0</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>0</integer>
                </dict>
                <key>DeviceName1</key>
                <dict>
                    <key>id</key>
                    <integer>81</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName2</key>
                <dict>
                    <key>id</key>
                    <integer>82</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName3</key>
                <dict>
                    <key>id</key>
                    <integer>83</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName4</key>
                <dict>
                    <key>id</key>
                    <integer>84</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceNameChange</key>
                <dict>
                    <key>id</key>
                    <integer>80</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>FactoryDefault</key>
                <dict>
                    <key>id</key>
                    <integer>69</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>FullFactoryDefault</key>
                <dict>
                    <key>id</key>
                    <integer>68</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>LongDeviceName</key>
                <dict>
                    <key>id</key>
                    <integer>85</integer>
                    <key>size</key>
                    <integer>64</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>RecantConnection</key>
                <dict>
                    <key>id</key>
                    <integer>65</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>UserMode</key>
                <dict>
                    <key>id</key>
                    <integer>67</integer>
                    <key>max</key>
                    <integer>3</integer>
                    <key>min</key>
                    <integer>1</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>WillShutdown</key>
                <dict>
                    <key>id</key>
                    <integer>64</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
            </dict>
            <key>GetReportTimeoutMS</key>
            <integer>3500</integer>
            <key>HIDDefaultBehavior</key>
            <string></string>
            <key>IOClass</key>
            <string>IOAppleBluetoothHIDDriver</string>
            <key>IOProbeScore</key>
            <integer>1000</integer>
            <key>IOProviderClass</key>
            <string>IOBluetoothL2CAPChannel</string>
            <key>PSM</key>
            <integer>17</integer>
            <key>ProductID</key>
            <integer>599</integer>
            <key>SetReportTimeoutMS</key>
            <integer>3500</integer>
            <key>VendorID</key>
            <integer>1452</integer>
        </dict>
        <key>Wireless Keyboard 2009 B JIS Map</key>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.AppleHIDKeyboard</string>
            <key>CapsLockDelay</key>
            <integer>75</integer>
            <key>DeviceUsagePairs</key>
            <array>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>6</integer>
                    <key>DeviceUsagePage</key>
                    <integer>1</integer>
                </dict>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>7</integer>
                    <key>DeviceUsagePage</key>
                    <integer>1</integer>
                </dict>
            </array>
            <key>FnFunctionUsageMap</key>
            <string>0x0007003a,0xff010021,0x0007003b,0xff010020,0x0007003c,0xff010010,0x0007003d,0xff010004,0x00070040,0x000C00B4,0x00070041,0x000C00CD,0x00070042,0x000C00B3,0x00070043,0x000C00E2,0x00070044,0x000C00EA,0x00070045,0x000C00E9</string>
            <key>FnKeyboardUsageMap</key>
            <string>0x00070050,0x0007004a,0x00070052,0x0007004b,0x0007002a,0x0007004c,0x0007004f,0x0007004d,0x00070051,0x0007004e,0x00070028,0x00070058</string>
            <key>FnModifierUsage</key>
            <integer>3</integer>
            <key>FnModifierUsagePage</key>
            <integer>255</integer>
            <key>HIDDefaultBehavior</key>
            <string>Keyboard</string>
            <key>IOClass</key>
            <string>AppleEmbeddedKeyboard</string>
            <key>IOProviderClass</key>
            <string>IOHIDInterface</string>
            <key>NumLockKeyboardUsageMap</key>
            <string>0x00070029,0x00070029,0x0007002a,0x0007002a,0x0007002b,0x0007002b,0x0007003a,0x0007003a,0x0007003b,0x0007003b,0x0007003c,0x0007003c,0x0007003d,0x0007003d,0x0007003e,0x0007003e,0x0007003f,0x0007003f,0x00070040,0x00070040,0x00070041,0x00070041,0x00070042,0x00070042,0x00070043,0x00070043,0x00070044,0x00070044,0x00070045,0x00070045,0x0007004a,0x0007004a,0x0007004b,0x0007004b,0x0007004c,0x0007004c,0x0007004d,0x0007004d,0x0007004e,0x0007004e,0x0007004f,0x0007004f,0x00070050,0x00070050,0x00070051,0x00070051,0x00070052,0x00070052,0x0007000d,0x00070059,0x0007000e,0x0007005a,0x0007000f,0x0007005b,0x00070018,0x0007005c,0x0007000c,0x0007005d,0x00070012,0x0007005e,0x00070024,0x0007005f,0x00070025,0x00070060,0x00070026,0x00070061,0x00070010,0x00070062,0x00070037,0x00070063,0x00070082,0x00070082,0x000700e0,0x000700e0,0x000700e1,0x000700e1,0x000700e2,0x000700e2,0x000700e3,0x000700e3,0x000700e4,0x000700e4,0x000700e5,0x000700e5,0x000700e6,0x000700e6,0x000700e7,0x000700e7</string>
            <key>ProductID</key>
            <integer>599</integer>
            <key>StandardType</key>
            <integer>2</integer>
            <key>VendorID</key>
            <integer>1452</integer>
            <key>alt_handler_id</key>
            <integer>45</integer>
        </dict>

Power Mac G5 OSX 10.5.8 (Leopard) と Apple wireless keyboard JIS

●Power Mac G5 OSX 10.5.8 (Leopard) と Apple wireless keyboard JIS を使うと、US(ANSI)キーボードと誤認識されてしまうという問題です。もっとも安易な解決方法は US キーボードを購入すればいいのでしょうが、それでは解決にはなりません。

さて
(1) 「Mac OS 10.5(Leopard)+他社製JISキーボード」のキー配列問題に対処する
(2) Apple 製ワイヤレスキーボードまたはマウスを識別する方法

この(2)によればアルミニウム製 Apple wireless keyboard には2007年と2009年の2タイプがあり、その区別はキーボードの裏を見れば分かるとの事です。この記述からすると自分の使っている Apple wireless keyboard は2009年型になります。

●それによれば Wireless Keyboard Update 2.0 をインストールすれば使えるとの事です。さっそくインストールしてみましたが状況は好転しません。システム要件は OSX 10.5.8 ですし、日本語にも対応したアップデータです。(1)にアップル社以外のキーボードでも使えるようにする設定方法があります。他社製なら話がわかるのですがアップル純正キーボードの話ですから。それに System Profiler で調べてみるとちゃんと Apple wireless keyboard って認識されているんですよね。Apple wireless keyboard JIS の productID を調べる方法があればいいのでしょうが、USB ポートに直接接続するキーボードなら別として、bluetooth USB 接続の wireless keyboard では、productID をどうやって調べたらいいのかわかりません。あっと、失礼。これは OSX 10.5.8 では無理みたいだということです。 OSX 10.7 では簡単に調べる事ができますね。

●思う所あって Mac OSX 10.7.5 (Lion) のシステムを調べてみました。具体的には /System/Library/Extensions/AppleHIDKeyboard.kext の内部の Info.plist です。すると OSX 10.5.8 の Info.plist とはかなり違う部分がありました。簡単に書けば「wireless keyboard 2009 B JIS MAP」という「B」が加わったキーボードがあるのです。その意味するところは2009年型でも2種類のタイプがあるという事です。つまり アルミニウム製 Apple wireless keyboard は「2007」「2009」の2種類では無く、それに「2009 B」を加えた3種類があったのです。おそらく OSX 10.7 Lion が発売された2011年頃に「2009 B」が加えられたのでしょう。よくよく調べてみたら、アップルの文書に iOS に対応した Apple wireless keyboard の種類についての説明がありました。それによれば「2009 B」を Apple Wireless Keyboard (2011) と呼ぶとの事です。型式では 2011 が MC184J/B, 2009 が MC184J/A,2007 が MB167J/A になります。公式発表では 2011 は OSX 10.8(Lion) 以後、2009 は OSX 10.6.2(Snow Leopard) 以後、2007はOSX 10.4.8 以後になっています。Wireless Keyboard Update 2.0 を適用することによって 2009 が OSX 10.5.8 でも使用可能になっていたのです。

●残念なことに OSX 10.5.8 (Leopard) は「2011」のサポートから外されてしまっていたのです。ですから古い「2009」の方を使っていれば JIS を US キーボードと誤認される事もなかったのです。さてまず、OSX 10.5.8 とOSX 10.7 の Info.plist を比較してみます。



上図は OSX 10.5.8 の Info.plist を Property List Editor で開いてみたものです。"Property List Editor"とは Developer Tools の中にあったユーティリティの一つです。Info.plist を見るにはテキストエディターでもいいのですが、中の構造を眺めるには、こちらの方が便利なものですから。



そしてこれが OSX 10.5.8 に Wireless Keyboard Update 2.0 をインストールした後の物です。一見して分るように Wireless Keyboard 2009 の項目が増えています。



上図は OSX 10.7 のInfo.plist を Property List Editor で開いてみたものです。ずいぶん項目数が減っていますが Wireless Keyboard 2009 B の項目があります。ちなみに Wireless Keyboard 2009 B JIS MAP を開いて productID を調べてみると 599 になっています。



これらの productID を同様にして調べてみると

    2009 ANSI MAP 569
    2009 B ANSI MAP 597
    2009 B ISO MAP 598
    2009 B JIS MAP 599
    2009 ISO MAP 570
    2009 JIS MAP 571

となっています。行の最後にある数字が productID です。この情報を利用して OSX 10.5.8 に Wireless Keyboard Update 2.0 をインストールした後の Info.plist に 2009 B JIS MAP の情報を付け加えればいいのです。しかしながら、 OSX 10.5.8 の Info.plist を見るとそれだけでは駄目のようで Wireless Keyboard 2009 B JIS の情報も付け加えなければならないようです。これをどこから調達してくるかです。それは簡単で Wireless Keyboard 2009 JIS をコピーしたものから productID を 599 に書き換えてやればいいのです。正確に記せばファンクションキー F3,F4 の情報を書き換えるべきなのでしょうが、OSX 10.5.8 には関係無い事ですし、必要があった場合に書き換えれば済む事ですから。最終的には他の種類のキーボードの対応も考慮して ANSI, ISO の情報も付け加えてやります。



こういう情報を付け加えます。データの取得にはお手持ちのデータを利用していただくのが最良かと。それから「B」のデータに関してはここにアップされてますねぇ。実際の作業は最初に挙げた (1) を参考にするといいでしょう。



以上の説明でやり方がさっぱり分らないという人は止めておいた方がいいです。MAC が起動不能になっても責任とれませんから。
簡単な手順を記しておきます。terminal を起動させます。terminal は /Applications/Utilities/ の中にあります。termnail が起動しましたら

cd ~/Desktop
mkdir work
cd work
cp -R /System/Library/Extensions/AppleHIDKeyboard.kext .

なお最後の行の最後にあるピリオドを見逃さないで下さい。ピリオドの前にはスペースが一つ入っています。ここまでの作業で何をしているのかといいますと作業領域として work をデスクトップ上に作成しその中に AppleHIDKeyboard.kext ファイルをコピーしています。次に AppleHIDKeyboard.kext 内にある Info.plist ファイルをオープンしていきます。Info.plist ファイルの改造を terminal でやってもいいのですが、あまりにも煩雑になるのでテキストエディトを使います。



コントロールキーを押しながら AppleHIDKeyboard.kext を選択しますと「パッケージの内容を表示」という項目が現れますのでそれを選択。



すると contents の下に Info.plist ファイルがあります。それにはコントロールキーを押しながらInfo.plist を選択しますとテキストエディトでオープンできます。しかし、そのままではデータ作成後に保存できないという悲劇に見舞われますので、Info.plist をあらかじめ作業領域へコピーしておきます。terminal から

cp ~/Desktop/work/AppleHIDKeyboard.kext/Contents/Info.plist ~/Desktop/work

以上で作業用フォルダ work 内に Info.plist がコピーされますので、これをテキストエディトでオープンします。

テキストエディトの検索で "Wireless Keyboard 2009 ANSI" を検索します。



この画像では途中データを省略しています。コピー開始は <key>Wireless Keyboard 2009 ANSI</key> からで、行が長く続きますのでスクロールしてゆき "Wireless Keyboard 2009 ANSI MAP" の直前の </dict> までをコピーします。そのコピーしたデータをどこにペーストするかといいますと、Info.plist を最後の行までスクロールします。



この "PASTE HERE" は実際には存在しません。ここに先ほどのデータをペーストします。そしてペーストしたデータの2カ所を書き換えます。1カ所目はProductID を 569 から 597 に変更します。書き換えるべき ProductID の場所は上図の "PASTE HERE" の少し上に VendorID がありますが、その上の SetReportTimeoutMS のもう1つ上です。2カ所目はデータ先頭行 "Wireless Keyboard 2009 ANSI" を "Wireless Keyboard 2009 B ANSI" に変更します。

次に "Wireless Keyboard 2009 B ANSI MAP" のデータを OSX 10.7 なり先に例示したようなネット上の場所からとってきます。で、それを先ほどの "PASTE HERE" の場所にペーストします。以上で "Wireless Keyboard B 2009 ANSI" の一組目のデータ作成は終了です。同じ要領で "Wireless Keyboard 2009 B ISO" 関係データを作成し、最後に "Wireless Keyboard 2009 B JIS" 関係データを作成します。注意点は ProductID の変更です。"Wireless Keyboard 2009 B ISO" の場合には ProductID を 570 から 598 へ、"Wireless Keyboard 2009 B JIS" の場合には ProductID を 571 から 599 へと書き換えます。間違いが無い事を確認した上でこれらを保存します。これはドライバーデータですので、間違えるとどのような事態を引き起こすか分りません。あくまで自己責任で願います。

さて、以上の改造をほどこしたファイルをオリジナルの作業用 AppleHIDKeyboard.kext の内部の Info.plist と置き換えます。

sudo mv ~/Desktop/work/Info.plist ~/Desktop/woork/AppleHIDKeyboard.kext/Contents/Info.plist

chown,chgrp コマンドで root,wheel に設定を戻します。作業フォルダ work 内で

sudo chown -R root AppleHIDKeyboard.kext
sudo chgrp -R wheel AppleHIDKeyboard.kext

出来上がった作業フォルダ内の AppleHIDKeyboard.kext を /System/Library/Extensions/AppleHIDKeyboard.kext に置き換えます。置き換える前にオリジナルデータを名称を変えて保存しておきます。

●注意:以下の変更はあくまで自己責任にて結果に自信の無い人は実行しない事。

sudo mv /System/Library/Extensions/AppleHIDKeyboard.kext /System/Library/Extensions/AppleHIDKeyboard.kext.orig
sudo cp -R ~/Desktop/work/AppleHIDKeyboard.kext /System/Library/Extensions/AppleHIDKeyboard.kext

以上でマックを再起動させます。なお再起動時に Extensions.mkext の更新が行われる関係上キャッシュの更新終了までしばらく待つ事になります。何事かと慌てる必要はありませんので。

何を書いてあるのかさっぱり分らないという人のために差分データを作成しました。これを本文で示した Info.plist の "PASTE HERE" にペーストすれば幾分かは簡単になるでしょう。こちらに挙げます。なお、差分データは不都合だとクレームが入るようなら削除します。