約 3,454,474 件
https://w.atwiki.jp/linux2ch/pages/46.html
設定ファイル関係 設定ファイル関係 コンパイルオプション vs 設定ファイル 主な設定ファイルの一覧 アクセス関係 起動・ログイン関係 ファイルシステム システム管理 ネットワーク システム系コマンド デーモン ユーザー向け設定ファイル 参考 ロギングとモニタリング cron コンパイルオプション vs 設定ファイル Linuxでプログラムの動作を設定する方法には、コンパイル時にオプションを指定して設定する方法、設定ファイルで実行時に動作を変える方法の2種類が存在する。 #起動時にオプションで渡すっつのもあり 前者の場合、設定しなおすにはプログラムの再コンパイルが必要だが、後者の場合は同じプログラムを実行し直す度に(場合によっては実行中に)動作する内容を変更することが可能。 主に、単純なコマンド系プログラムでは前者の方式だけ、シェルやネットワークみたいなシステム系の設定では前者に加えて後者の方式が取られる(というか、用意されてないと使いづらくてしょうがない)。ファイルになってるのは、単純で柔軟性があるという理由だけなので、ユーザーにやさしいフロントエンド系のプログラム(Perlとかの言語で書かれたようなやつ)を使ってファイルを間接的に操作してもOK(*1)。 このページでは、後者の設定ファイルを使ったプログラムとシステムの設定について書いてます。 主な設定ファイルの一覧 参考:Understanding Linux configuration files アクセス関係 マシンへのアクセスを制御する設定ファイル。 ファイル名 コメント Manページ /etc/host.conf IPアドレスの名前解決方法の設定(今は殆ど使われてない) host.conf.5 /etc/nsswich.conf 名前解決等の手段を設定 /etc/hosts IPアドレスとホスト名の対応付け hosts.5 /etc/hosts.allow アクセス許可設定 hosts_access.5 /etc/hosts.deny アクセス拒否設定 hosts_access.5 起動・ログイン関係 ブート・ログイン時の処理を決定する設定ファイル。 ファイル名 コメント Manページ /etc/issue, issue.net ログイン前に表示される注意書き issue.5, issue.net.5 /etc/rc.d/rc /etc/rc.d/rc.local ローカル用の起動設定 /etc/rc.d/rc.sysinit システム用の起動時初期化設定 /etc/rc.d/rcX.d ブートアップ時・終了時に実行するスクリプトを入れるディレクトリ、ランレベル別 ファイルシステム ファイルシステム関連の設定ファイル。 ファイル名 コメント Manページ /etc/mtab 現在マウントされているファイルシステムの情報 /etc/fstab マウントするファイルシステムの情報 fstab.5 /etc/mtools.conf DOS用ユーティリティ向け設定 システム管理 システム管理者向けの設定ファイル。 ファイル名 コメント Manページ /etc/group グループ設定 group.5 /etc/nologin root以外のログインの禁止を示すファイル nologin.5 /etc/passwd ユーザアカウント情報の設定ファイル passwd.5 /etc/rpmrc RPMコマンドの設定 /etc/securetty rootがログインできる端末の設定 securetty.5 /etc/usertty /etc/shadow 暗号化パスワード shadow.5 /etc/shells シェルとして認識されている物の一覧 shells.5 /etc/motd ログイン後に表示されるお知らせ motd.5 ネットワーク ネットワーク関係の設定ファイル。 ファイル名 コメント Manページ /etc/gated.conf /etc/gated.version /etc/gateway /etc/protocols プロトコル定義。変更禁止 protocols.5 /etc/resolv.conf ネームサーバーなどの設定 resolv.conf.5 /etc/rpc RPC向けデーターベース。NFS用 rpc.5 /etc/exports エキスポートされるファイルシステム。NFS用 exports.5 /etc/services インターネットサービスリスト services.5 /etc/inetd.conf スーパーサーバ設定ファイル /etc/sendmail.cf Sendmailの設定(かなり古いバージョンです) /etc/sysconfig/network ”システムの”ネットワーク関連設定(Red Hat) /etc/network/interfaces ネットワーク設定(Debian) システム系コマンド システム関係のコマンドの設定ファイル。 ファイル名 コメント Manページ /etc/logrotate.conf ログのロテート(シフト)の設定 /etc/identd.conf /etc/ld.so.conf ダイナミックリンカーの設定 /etc/inittab ブートアップ時・終了時に実行する処理。UNIXで最初に読まれる設定です。 inittab.5 /etc/termcap 端末設定ファイル termcap.5 デーモン デーモンの設定ファイル。 ファイル名 コメント Manページ /etc/syslog.conf システムログデーモンの設定 syslog.conf.5 /etc/httpd.conf Apache HTTPサーバーデーモンの設定(旧バージョン) /etc/modules.conf 読み込むカーネルモジュールの設定ファイル modules.conf.5 ユーザー向け設定ファイル 個別ユーザー向け、設定・初期化ファイル。 ファイル名 コメント Manページ 書式 ~/.bash_logout ログアウト時に読み込むBashの後始末ファイル Bashスクリプト ~/.bash_profile ログイン時に読み込むBashの初期化ファイル Bashスクリプト ~/.bash_history Bash コマンドの履歴ファイル Bashスクリプト ~/.bashrc 起動時に読み込むBashの設定ファイル Bashスクリプト 参考 JM Project Gentoo ドキュメント ロギングとモニタリング システムのログは/var/log/syslogなどに出力される。ログを監視することをロギングと呼ぶ。 プロセスの稼働状況はtopコマンドなどで監視できる。システムの稼働状況を監視することをモニタリングと呼ぶ。 たとえば、ブート時にサービスが起動しなかったときは、まずログファイル/var/log/boot.logを見る。その後に、サービス名が分かったらsystemctl status [サービス名]のように実行して、エラーの詳細を見て解決すればよい。 また、ps axで実行中のプロセス一覧を表示できる。kill [PID]でプロセスの強制終了ができる。 cron cron(クーロンと読む)はデーモンのひとつで、決まった時間になった時に定期的にスクリプトを実行してくれる。 crontabという設定ファイル・コマンドを持つが、基本的にシステムの方でスクリプトを格納するための決められた場所(スクリプトを入れるべきディレクトリ)が用意されているので、その中に記述したスクリプトを放り込めばよい。
https://w.atwiki.jp/is12sh/pages/2.html
メニュー トップページ ニュース スペック アップデート 画像 動画 料金 オンラインマニュアル FAQ 仮root方法 常用root Tips アプリ テンプレ 現行スレ&過去ログ au他機種wiki IS01 IS03 SIRIUS α IS06 REGZA Phone IS04 IS05 SMT-i9100(タブレット) Motorola Xoom Wi-Fi TBi11M(タブレット) EVO WiMAX ISW11HT INFOBAR A01 G'zOne IS11CA REGZA Phone IS11T EVO 3D ISW12HT PHOTON ISW11M AQUOS PHONE IS13SH DIGNO ISW11K ARROWS Z ISW11F GALAXY SII ISW11SC INFOBAR C01 Xperia acro HD IS12S HTC J ISW13HT AQUOS PHONE SERIE ISW16SH AQUOS PHONE CL IS17SH G'zOne TYPE-L CAL21 HTC J butterfly HTL21 HTC WIKI INFOBAR A02(HTX21) Xperia UL SOL22 HTC J One HTL22 AQUOS PHONE SERIE SHL22 兄弟機種wiki AQUOS PHONE SH-12C リンク au公式 SHARP公式 SHARPサポートページ スペシャルサイト Wikipedia Wikipedia(ISシリーズ) Wikipedia(au 4G LTE) 合計: - 今日: - 昨日: - ここを編集
https://w.atwiki.jp/marvelheroes/pages/146.html
グルート 価格 350G/200ES 非召喚時の効果がHealth/Def、と防御面で優秀なため、壁役のヒーローが非召喚で運用するのに向いている。 パワー 表記数値は60Lv、チームアップ装備なしの時のもの TIER1 Companion Passive 召喚時間無制限 Assist Passive 召喚時間 30秒攻撃力UP 200%最大値の5%分のHealthを毎秒回復 Enchanted Mind Away 非召喚時に以下のボーナス発生Health +900Defense値 +720 TIER2 Bodyguard Passive プレイヤーのダメージの10%を肩代わりする Loyal Ally Passive 敵を一体倒す毎に再召喚クールタイムを1秒短縮する Amazing Awaereness Away 非召喚時に、資金、レア率、スペシャルアイテム率をそれぞれ10%UP TIER3 Bramble Toss Ranged PhysicalダメージCT 8秒 Groot's Roots Melee ノックアップ PhysicalダメージCT 6秒 Groot Tough Away 非召喚時、 CT 30秒攻撃を受けた際、10%の確率で発動10秒間、毎秒1%のHealthを回復 TIER4 Crater Area スタン スタン時間 1.5秒CT 60秒Physicalダメージ I AM GROOT! - CT 30秒10秒間、以下のバフを得るhealth +6000Defense +5% We Are Groot! Away 攻撃を受けた際、2.5%の確率で召喚CT 30秒Defense値 +180010秒間、毎秒0.5%のHealthを回復
https://w.atwiki.jp/shooto/pages/119.html
プロ修斗 3/16 後楽園大会 試合結果 [大会名]"BACK TO OUR ROOTS II" [日時]2007年3月16日(金) [会場]東京/後楽園ホール [主催]株式会社サステイン [特別協賛]株式会社クリムゾン [リンク]SHOOTO NEWS/SHOOTO GAZETTE/X-SHOOTO 【第1試合】フェザー級 5分2R[新人王決定トーナメント2回戦] △田村和也(JPN/マッハ道場) ドロー 0-0 △エダ“塾長”こうすけ(JPN/PUREBRED京都) ※[メイン]若林太郎 19-19(1R 10-9/2R 9-10) [サブ]鈴木利治 19-19(1R 10-9/2R 9-10) 菅野浩之 19-19(1R 10-9/2R 9-10) ※※トーナメント規定により抽選で田村が準決勝進出 【第2試合】フライ級 5分2R[新人王決定トーナメント1回戦] ×室伏カツヤ(JPN/roots) 判定 0-3 ○山本達也(JPN/ノースキングスジム) ※[メイン]鈴木利治 17-20(1R 9-10/2R 8-10) [サブ]菅野浩之 19-20(1R 10-9/2R 9-10) 横山忠志 18-20(1R 9-10/2R 9-10) ※※山本が準決勝進出 【第3試合】ミドル級 5分2R ○新美吉太郎(JPN/総合格闘技津田沼道場) TKO 2R 4'22" ×イワン・ムッサルド(スイス/チーム・フロタ) ※グラウンドパンチ ※※[メイン]若林太郎 1R 10-8 [サブ]鈴木利治 1R 10-9 横山忠志 1R 10-8 【第4試合】フライ級 5分2R ×タイガー石井(JPN/パラエストラ吉祥寺) KO 1R 1'33" ○室伏シンヤ(JPN/SUBMIT静岡) 【第5試合】フェザー級 5分3R ×田澤聡(JPN/GUTSMAN・修斗道場) S 3R 2'00" ○上田将勝(JPN/パラエストラ東京) ※スピニングチョーク ※※[メイン]鈴木利治 1R 9-10/2R 8-10 [サブ]菅野浩之 1R 8-10/2R 8-10 横山忠志 1R 9-10/2R 9-10 【第6試合】ライト級 5分3R ×門脇英基(JPN/和術慧舟會東京本部) 判定 1-2 ○ウィッキー聡生(JPN/シューティングジム横浜) ※[メイン]若林太郎 28-29(1R 9-10/2R 10-9/3R 9-10) [サブ]鈴木利治 28-30(1R 9-10/2R 10-10/3R 9-10) 菅野浩之 29-28(1R 10-9/2R 10-9/3R 9-10) 【第7試合】ライト級 5分3R ○佐藤ルミナ(JPN/roots) TKO 1R 1'21" ×アウグスト・フロタ(スイス/チーム・フロタ) ※頭部の裂傷 【第8試合】世界バンタム級チャンピオンシップ 5分3R △BJ(JPN/勝村道場/王者) ドロー 1-1 △漆谷康宏(JPN/和術慧舟會RJW/挑戦者・同級世界1位) ※[メイン]鈴木利治 28-29(1R 9-10/2R 10-9/3R 9-10) [サブ]菅野浩之 29-29(1R 9-10/2R 10-9/3R 10-10) 横山忠志 30-29(1R 10-10/2R 10-9/3R 10-10) ※※BJが初防衛に成功
https://w.atwiki.jp/wrtb/pages/3365.html
The Roots of Goofy 原題:The Roots of Goofy 発売:1984年 概要 『Walt Disney Cartoon Classics』として発売されたビデオソフト。 グーフィーの主演作品を収録。アメリカ国外でのみリリースされた。 収録内容 preparing
https://w.atwiki.jp/ezshooter/pages/56.html
BPSGRを使ってみたらエラーが出て起動できない。 初期化の時点でこけるよう。
https://w.atwiki.jp/external_storage/pages/22.html
UPDATE 2010年06月06日 (日) 16時56分25秒; MySQLのインストール Version : MySQL 5.1.47 ※順番間違えるとなんだかバグる ■yum版のMySQLを消す バイナリインストールが目的なので入っていたら消す。 # yum list installed | grep mysql 何か表示されていたら消す # yum remoee mysql ■ユーザの追加 インストールをする前にグループとユーザを作成する。 # groupadd mysql # useradd -g mysql mysql ■ダウンロード ディレクトリを移動してからダウンロードするといいかも。 # cd /usr/local/src # wget http //dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.47.tar.gz/from/ftp //ftp.iij.ad.jp/pub/db/mysql/ ■解凍 # tar zxvf mysql-5.1.47.tar.gz ■コンパイル前処理 # cd mysql-5.1.47 # ./configure --prefix=/usr/local/mysql-5.1 \ --with-readline \ --with-charset=utf8 \ --with-extra-charsets=all 使ったオプション 設定 説明 --prefix インストール先(指定しないとファイルがバラける) --with-charset 新しくDBを作ると設定されるデフォルトの文字コード --with-extra-charsets with-charset以外の文字コードを使いたい場合 --with-readline コンソールでバックスペースが使えるようになる? ※エラーが出た checking for termcap functions library... configure error No curses/termcap library found curses/termcapがないらしいのでインストール # yum install -y ncurses-devel ■コンパイルとインストール # make # make install ■DBの初期化 以前のMySQLのデータを引き継ぐときはやらないらしい。 # /usr/local/mysql-5.1/bin/mysql_install_db 又は #./scripts/mysql_install_db ■設定ファイルのコピー # cp -p ./support-files/my-medium.cnf /etc/my.cnf 設定ファイルの説明 ファイル名 説明 my-small.cnf 64MB以下くらいのメモリで動かす用 my-medium.cnf 128MB以下くらいのメモリで動かす用 my-large.cnf 512MB以下くらいのメモリで動かす用 my-huge.cnf 1GB~2GB以下くらいのメモリで動かす用 my-innodb-heavy-4G.cnf 4GBのメモリとInnoDBで作成されたデータベース用 ■権限の変更 ディレクトリとその配下のファイルとディレクトリのユーザとグループを変更する。 # chown -R mysql mysql /usr/local/mysql-5.1 ■MySQLの起動 # /usr/local/mysql-5.1/bin/mysqld_safe --user=mysql mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql-5.1/var ※my.cnfのディレクトリに関係あるみたい。動かない場合はこれでも試してみる。 # /usr/local/mysql-5.1/share/mysql/mysql.server start ※さらに起動できない場合エラーを確認する # less /usr/local/mysql-5.1/var/localhost.localdomain.err ■MySQLの確認 # /usr/local/mysql-5.1/bin/mysqladmin ping mysqld is alive デフォルトで入ってるDBの確認 # /usr/local/mysql-5.1/bin/mysqlshow mysqlってDBを見てみる # /usr/local/mysql-5.1/bin/mysqlshow mysql ■rootパスワードを設定 まずはパスを通しておく # vi ~/.bash_profile 適当に追加しておく export PATH=$PATH /usr/local/mysql-5.1/bin 設定ファイルの適用 # source ~/.bash_profile mysqlを実行してユーザ確認 # mysql -u root mysql select host,user,password from user; +-----------------------+------+----------+ | host | user | password | +-----------------------+------+----------+ | localhost | root | | | 127.0.0.1 | root | | 上のようなユーザがいるのでそれぞれパスワードをつける SET PASSWORD FOR root@localhost=PASSWORD( hogehoge ); いらなそうなのはdropしてまえ。 ためしに入ってみる exit; # mysql -h localhost -u root -p Enter password ************** 入れたらOKってことで ■自動起動設定 起動ファイルを名前を変えてコピーする # cp /usr/local/mysql-5.1/share/mysql/mysql.server /etc/rc.d/init.d/mysqld 自動起動を設定する # chkconfig --add mysqld # chkconfig mysqld on 自動起動の確認 # chkconfig --list mysqld mysql.server 0 off 1 off 2 on 3 on 4 on 5 on 6 off 次からこれだけで手動起動や停止もできる。 # /etc/rc.d/init.d/mysqld start 又は # service mysqld start ■参考サイト http //linux.kororo.jp/cont/server/mysql4.php http //blog.77jp.net/%E3%81%9D%E3%81%AE%E4%BB%96%E3%80%80linux/mysql-5130-%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB-linux.html http //www.insight-tec.com/mailmagazine/mysql/091014.html http //memorva.jp/memo/linux/mysql.php
https://w.atwiki.jp/dominions3/pages/551.html
Quick Roots 一定範囲のアンデッドにHasteの効果を与えます Quick Roots ジェム 疲労 内部ID 150 0 0 使用 水中判定 効果 効果量 戦闘 水中可 Buff 主属性 主Lv 効果発生数 射程距離 Holy 1 1 5+5/Lv 副属性 副Lv 効果範囲 命中補正 - 0 1 0 領域 Lv 防御判定 抵抗判定 Enchantment 1 防御無視 専用国家 EA Pangaea, MA Pangaea, LA Pangaea ゲーム内説明文 An unholy prayer that quickens the vines reanimating Manikins. 和訳 この不浄なる祈りは、Manikinを操る蔓を加速させます。 注記 最速で解禁されるPangaeaのアンデッド支援魔法。研究レベル自体が非常に低いため、序盤から利用できる。説明を見るとManikinの類にしか効きそうにないが、実際にはアンデッドなら何でも対応できる。 全体的に移動の遅すぎるアンデッドらにはHasteの恩恵はなかなかのもの。遠隔攻撃ができるアンデッドはほとんど居ないだけに、移動速度の向上は隙を減らす意味でも価値がある。 残念ながら範囲が狭すぎるため大軍にかけることは不可能に等しいが、魔法抵抗力が高すぎてPuppet Masteryでは支援できない強力な大物アンデッドにかける用途には最後まで利用できる。 コメント 名前 コメント
https://w.atwiki.jp/rayroot/pages/27.html
このページはまだ編集中です。 ALS(Automatic Light Sensor)の解説 まったく需要のなさそうなALSの設定値に関して解説する。 【参考文献】 (Need Root)Enable Automatic Light Sensor on Xperia Ray AS3676のデータシート 【前準備】 ALSを有効にするには、参考文献1.)に書いてある手順のうち、以下の箇所の変更が必要。 echo 0,0,0,0 $dev/lcd-backlight/als/params #[gain],[filter_up],[filter_down],[offset] ↓変更 echo 3,2,2,0 $dev/lcd-backlight/als/params #[gain],[filter_up],[filter_down],[offset] 「echo x,x,x,x」の説明については後述。 【$dev/lcd-backlight/als/paramsの各paramの説明】 詳しくは参考文献2.)の「8.4.8 ALS - Ambient Light Sensing」参照 [gain] [gain]は光の明るさを検出した何倍で数値に変換するか。 調整範囲は0~3で、0=1/4、1=1/2、2=1、3=2、の意味。 0がもっとも検出範囲が狭くなるので、明るい場所でよく使うなら0を設定する。 逆に暗めの部屋なら3を使用する。 [filter_up],[filter_down] [filter_up],[filter_down]は、明るさを検出する速度(検出周波数?)を変更するもの 調整範囲は0~7で、各値は0から、0.25Hz, 0.5Hz, 1Hz, 2Hz, 4Hz, 8Hz, 16Hz, 32Hz、となっている。 高い値に設定するとその分電池を消費する(と思われる)ので、好みで設定する。 [offset] [offset]は、検出した数値にいくつ+するか。 調整範囲は0~255。オフセットは必要なときだけ設定すればいいので、とりあえず0固定で良い。 【ALS値について】 ALS値は、明るさ(センサーから取得した値)×[gain]+[offset]、という式で表せる。 最小値は0で、最大値は255。 現状ALS値がどの値を示すかは標準の電話アプリから「*#*#7378423#*#*」を入力し Serviceが起動するので、「Service tests」→「Ambient Light Sensor」を選択するとわかる。 この値は上述のとおり、[gain]と[offset]に設定した値で変化する。 本体右上(よく見ると丸い穴が見える)のセンサーをふさいで見ると、ALS値が0になることが確認できるはず。 ちなみに、[gain]を0に設定した場合、蛍光灯の弱い光ではあまり変動しなくなるので、 よく使用する場所で低い範囲でしか値が変動しない場合は、[gain]を上げたほうが調整がしやすい。 【als_curve.confの説明】 詳しくは参考文献2.)の「Figure 23. Ambient Light Sensor internal circuit」参照 als_curve.confには行ごとにALSカーブが設定されている。 stockでは16段階(16行分)の設定があるが、「画面の明るさ」を最低に設定した場合一番上のALSカーブが使用され、 明るさを最大にした場合は一番下のALSカーブが使用される。 各行ごとに group, y0, y3, k1, k2, x1, x2 の形式をとる。 group ALSカーブのグループ番号。1しかないみたいなので変更する必要なし y0 画面の明るさの最小値(256で割られた値) y3 画面の明るさの最大値(256で割られた値) k1 傾き1。座標(x1,y0)からk1/32という傾きでカーブが引かれるみたい k2 傾き2。座標(x2,x2*k1/32?)からk2/32という傾きでカーブが引かれるみたい x1 傾き1のカーブを使用し始める閾値(ALS値)。ALS値がx1以下なら明るさはy0固定 x2 傾き2のカーブを使用し始める閾値(ALS値)。 ※注意・・説明は推測含みます。 実際に今の設定でy0、y3の明るさがどのくらいになるのかは、 右上のセンサーを指で塞ぐか懐中電灯等で強い光を当ててみるとわかる。 【ALSカーブの調整例】 画面の明るさを最小にした場合は als_curve.conf にあるうち一番上の行の 1,6,6,0,0,10,38 が使用される。 この設定の場合、y0,y3が6なので明るさは6固定ということになる。 6は真っ暗な部屋で使用するにはいいが、部屋の電気をつけると暗すぎてよく見えない。 一つ上の設定は 1,13,61,10,13,10,38 だが、これだと自分は少々明る過ぎると感じたので、これよりは明るさを抑えた設定を目指すことにした。 自分の場合、最小値はもともとの6で問題なかったので、最大値だけを変更することにする。 何回か値を変えてリブートを繰り返し、25ぐらいが適当と判断。 最終的に 1,6,25,10,13,10,38 とした。
https://w.atwiki.jp/is01rebuild/pages/97.html
Bluetooth 電源関連 無線LANの時と同様に行くと思いきや全く同様にではなかった。 無線LANの場合 # echo 1 /sys/devices/platform/bwpm/wifi で電源onなのだが…、同じsysファイルシステムのディレクトリを参照すると、 # cd /sys/devices/platform/bwpm/wifi # ls -l rw-rw-rw- root root 4096 2011-09-27 21 55 fm rw-rw-rw- root root 4096 2011-09-27 16 11 bluetooth rw-rw-rw- root root 4096 2011-09-27 21 55 wifi bluetoothがある、これは!? # echo 1 /sys/devices/platform/bwpm/bluetooth としてみたが、反応無し! ということで、kernelソースコードに入る。 反応しない訳 echo 1 /sys/devices/platform/bwpm/bluetooth で反応しない訳 $(KERNEL_SRC)/drivers/sharp/bwpm/bwpm.c を参照すると、 static ssize_t show_bluetooth_power(struct device *pdev, struct device_attribute *pattr, char *buf) { bwpm_data_t *p_priv = (bwpm_data_t *)dev_get_drvdata(pdev); buf[0] = (char)(p_priv- bluetooth); return( 1 ); } static ssize_t set_bluetooth_power(struct device *pdev, struct device_attribute *pattr, const char *buf, size_t count) { if ( (buf[0]==0) || (buf[0]==1) ){ bwpm_bluetooth_on( pdev, (int)buf[0] ); return( count ); } return( 0 ); } static ssize_t show_wifi_power(struct device *pdev, struct device_attribute *pattr, char *buf) { bwpm_data_t *p_priv = (bwpm_data_t *)dev_get_drvdata(pdev); int status; status = p_priv- wifi; return snprintf( buf, PAGE_SIZE, "%d\n" , status ); } static ssize_t set_wifi_power(struct device *pdev, struct device_attribute *pattr, const char *buf, size_t count) { int new_status; sscanf( buf, "%d", new_status ); if ( (new_status==0) || (new_status==1) ){ bwpm_wifi_on( pdev, new_status ); } return count; } と…、見てみる。 set_wifi_power は buf から sscanf で atoi の様な動作を入れてある。 sscanf( buf, "%d", new_status ); show_wifi_powerも同様に、bufに文字列が、戻り値にlengthが入るように加工されている。 return snprintf( buf, PAGE_SIZE, "%d\n" , status ); show_bluetooth_power 及び set_bluetooth_power は buf に ASCIIコード文字列ではなく、char型 整数をそのまま受け渡している。対応させるには、open して write でバイナリを書き込むしか無いか??。 kernel 内での Bluetooth HW サスペンドとレジューム $(KERNEL_SRC)/drivers/serial/serial_core.c 上記のコード内にて、下記のような部分を見つけたIS01 デフォルト1.6でBluetoothをon/offした際に出てくる。 また、デフォルトではタイマーを用いて一定時間経つとレジュームしているような気がする。 デフォルト1.6での挙動を調べるために printk ("uart_ioctl() msm_hs_request_clock_off()\n"); 部分の DEBUG 情報に、tty の ネームを出すように変更 printk ("%s uart_ioctl() msm_hs_request_clock_off()\n",tty- name); この結果から、Suspend the HW driver 及び、 Resume the HW driver は ttyHS0 に向けて発行されていることが明らかになった。 ttyHS0 は owner が bluetooth になっているので、おそらくこれが、deviceファイルだと思っていたが確信は無かったので^^; $(KERNEL_SRC)/drivers/serial/serial_core.c (抜粋&省略) /* ===== ADDED BY CSR START ===== */ #define TIOSPSERIAL (0x5520) #define TIORPSERIAL (0x5521) #ifdef CONFIG_SERIAL_MSM_HS void msm_hs_request_clock_off(struct uart_port *uport); void msm_hs_request_clock_on(struct uart_port *uport); #endif /* ===== ADDED BY CSR END ===== */ (省略) /* ===== ADDED BY CSR START ===== */ case TIOSPSERIAL /* Suspend the HW driver */ { #ifdef CONFIG_SERIAL_MSM_HS struct uart_state *state = tty- driver_data; struct uart_port *port = state- port; ret = 0; // Customize for Bluetooth //gpio_set_value( 155, 0 ); msm_hs_request_clock_off(port); uart_change_pm(state, 3); #endif //printk ("uart_ioctl() msm_hs_request_clock_off()\n"); printk ("%s uart_ioctl() msm_hs_request_clock_off()\n",tty- name); break; } case TIORPSERIAL /* Resume the HW driver */ { #ifdef CONFIG_SERIAL_MSM_HS struct uart_state *state = tty- driver_data; struct uart_port *port = state- port; // Customize for Bluetooth //gpio_set_value( 155, 1 ); uart_change_pm(state, 0); msm_hs_request_clock_on(port); #endif //printk ("uart_ioctl() msm_hs_request_clock_on()\n"); printk ("%s uart_ioctl() msm_hs_request_clock_on()\n",tty- name); ret = 0; break; } /* ===== ADDED BY CSR END ===== */ (省略) 電源を on/off する(していると思われる)。 ということで、bluetooh を on/off するだけの toggle コードを書いた。 先に記述したカーネルの /sys/devices/platform/bwpm/bluetooth 部分と、 $(KERNEL_SRC)/drivers/serial/serial_core.c 部分に対応させてみた。 使い方 ソースコードは btsw.zip からDLできます。 ANDROIDソースの system/extras に btsw ディレクトリを解答して下さい。 ソースのルートで $ source ./build/envsetup.sh ターゲットボードの指定のある方は指定してから $ cd system/extras/btsw/ $ mm とすると、ターゲットの /system/bin/ に btsw と btstatus が出来ているかと思います。 btsw 結果 # btsw bluetooth now status=(on) open(/sys/devices/platform/bwpm/bluetooth) write (0) off success # btsw bluetooth now status=(off) open(/sys/devices/platform/bwpm/bluetooth) write (1) on success とするだけで、Bluetoothのon/offをしているつもり。 hciattachを起動していると、off→on に変わったときbluetoothで書いた h4_recv Unknown HCI packet type が大量に出てくるので動いているような気がする。 btstatus 結果 # btstatus bluetooth now status=(on) か # btstatus bluetooth now status=(off) となる。 少なくとも、dmesg で得られる結果はそうなっているが実際の動作がどうなのかは未検証。 dmesg 結果 off の結果 3 [24260.192424] [bwpm] bwpm_bluetooth_on Low-Power-mode 3 [24260.192444] [bwpm] bwpm_bluetooth_on RF OFF 3 [24260.192450] [bwpm] bwpm_bluetooth_on change status (1- 0) 4 [24260.192617] ttyHS0 uart_ioctl() msm_hs_request_clock_off() on の結果 3 [24320.804430] [bwpm] bwpm_bluetooth_on RF ON 3 [24320.805377] [bwpm] bwpm_bluetooth_on Normal-Power-mode 3 [24320.805390] [bwpm] bwpm_bluetooth_on change status (0- 1) コメント 名前 コメント すべてのコメントを見る btsw ソース /* IS01 Bluetooth power switch test */ #include stdlib.h #include errno.h #include fcntl.h #include sys/types.h #include sys/stat.h #define BT_SWITCH_FILE "/sys/devices/platform/bwpm/bluetooth" #define BT_UART_FILE "/dev/ttyHS0" /* ===== ADDED BY CSR START ===== */ #define TIOSPSERIAL (0x5520) #define TIORPSERIAL (0x5521) /* ===== ADDED BY CSR END ===== */ int main(int argc, char **argv) { int sz; int fd = -1; int ret = -1; char buffer = 0; // 現在の状態確認 fd=open(BT_SWITCH_FILE, O_RDONLY ); if(fd != -1 ){ sz=read(fd, buffer, 1); if( sz == 1 ){ printf("bluetooth now status=(%s)\n",(buffer? "on" "off" ) ); } close(fd); } // 状態設定 buffer = (buffer==1 ? 0 1 ); // BT UART のレジューム設定 if( buffer == 1 ) { fd=open(BT_UART_FILE, O_RDWR ); if( fd 0 ) return -1; if( ioctl(fd, TIORPSERIAL, NULL) ) { close(fd); perror("ioctl failed"); return ret; } close(fd); } // 電源系 fd=open(BT_SWITCH_FILE, O_WRONLY ); if( fd != -1 ){ sz=write(fd, buffer, 1); if( sz 0 ){ printf("write(%s) failed %s (%d)", BT_SWITCH_FILE, strerror(errno), errno); }else{ ret=0; printf("open(%s) write (%d) %s success\n",BT_SWITCH_FILE,buffer,(buffer? "on" "off" )); } close(fd); } else { printf("open(%s) for write failed %s (%d)", BT_SWITCH_FILE, strerror(errno), errno); } // BT UART のレジューム設定 int cmd=TIOSPSERIAL; if( buffer == 1 ) { cmd=TIORPSERIAL; } if( cmd == TIOSPSERIAL ){ fd=open(BT_UART_FILE, O_RDWR ); if( fd 0 ) return -1; if( ioctl(fd, cmd, NULL) ) { close(fd); perror("ioctl failed"); return -1; } close(fd); } return ret; } (2011/09/27 22 44 公開)