検索条件
全9件
(1/2ページ)
wget http://gma500re.altervista.org/scripts/poulsbo.sh && sh ./poulsbo.sh個人的にはレポジトリでまとめてインストールするのが好みなので、Lucazade(gma500)に期待していたのですが、xserver-xorg-video-psbがFailed to buildのままで残念でした。xserver-xorg-video-psb以外をインストールしても、結局最後の部分で手動が入るので、上記にあるGMA500REのスクリプトでインストールするのが楽だと思います。
alias snd-card-0 index=0 options snd-hda-intel model=basic再起動後、ターミナルで alsamixer を実行して、右から2番目にあるMonoのボリュームを大きくします。
$ sudo apt-get install build-essential kernel-package libncurses5-dev libqt3-mt-dev $ sudo apt-get install linux-source-2.6.31 $ cd /usr/src $ sudo tar xvjf linux-source-2.6.31.tar.bz2 $ cd linux-source-2.6.31 $ sudo cp /boot/config-2.6.31-14-generic .config $ sudo make oldconfig
diff --git a/drivers/net/wireless/libertas/cmd.c b/drivers/net/wireless/libertas/cmd.c
index 6850981..ede1c5b 100644
--- a/drivers/net/wireless/libertas/cmd.c
+++ b/drivers/net/wireless/libertas/cmd.c
@@ -1496,6 +1496,13 @@ int lbs_prepare_and_send_command(struct lbs_private *priv,
ret = lbs_cmd_fwt_access(cmdptr, cmd_action, pdata_buf);
break;
+ case CMD_802_11_GET_LOG:
+ cmdptr->command = cpu_to_le16(CMD_802_11_GET_LOG);
+ cmdptr->size = cpu_to_le16(sizeof(struct cmd_ds_802_11_get_log) +
+ S_DS_GEN);
+ ret = 0;
+ break;
+
case CMD_GET_TSF:
cmdptr->command = cpu_to_le16(CMD_GET_TSF);
cmdptr->size = cpu_to_le16(sizeof(struct cmd_ds_get_tsf) +
diff --git a/drivers/net/wireless/libertas/cmdresp.c b/drivers/net/wireless/libertas/cmdresp.c
index c42d3fa..4fe93b4 100644
--- a/drivers/net/wireless/libertas/cmdresp.c
+++ b/drivers/net/wireless/libertas/cmdresp.c
@@ -189,7 +189,21 @@ static int lbs_ret_802_11_bcn_ctrl(struct lbs_private * priv,
priv->beacon_period = le16_to_cpu(bcn_ctrl->beacon_period);
}
+ lbs_deb_leave(LBS_DEB_CMD);
+ return 0;
+}
+
+static int lbs_ret_802_11_get_log(struct lbs_private * priv,
+ struct cmd_ds_command *resp)
+{
+ struct cmd_ds_802_11_get_log *log = &resp->params.log;
+
lbs_deb_enter(LBS_DEB_CMD);
+ priv->wstats.discard.retries = get_unaligned_le32(&log->retry);
+ priv->wstats.discard.code = get_unaligned_le32(&log->wepundecryptable);
+ priv->wstats.discard.misc = get_unaligned_le32(&log->ackfailure);
+ lbs_deb_leave(LBS_DEB_CMD);
+
return 0;
}
@@ -266,7 +280,9 @@ static inline int handle_cmd_response(struct lbs_private *priv,
case CMD_RET(CMD_802_11_BEACON_CTRL):
ret = lbs_ret_802_11_bcn_ctrl(priv, resp);
break;
-
+ case CMD_RET(CMD_802_11_GET_LOG):
+ ret = lbs_ret_802_11_get_log(priv, resp);
+ break;
default:
lbs_pr_err("CMD_RESP: unknown cmd response 0x%04x\n",
le16_to_cpu(resp->command));
diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h
index c8a1998..7ce35fc 100644
--- a/drivers/net/wireless/libertas/hostcmd.h
+++ b/drivers/net/wireless/libertas/hostcmd.h
@@ -771,6 +771,7 @@ struct cmd_ds_command {
/* command Body */
union {
+ struct cmd_ds_802_11_get_log log;
struct cmd_ds_802_11_ps_mode psmode;
struct cmd_ds_802_11_get_stat gstat;
struct cmd_ds_802_3_get_stat gstat_8023;
diff --git a/drivers/net/wireless/libertas/wext.c b/drivers/net/wireless/libertas/wext.c
index 8bc1907..9e0d161 100644
--- a/drivers/net/wireless/libertas/wext.c
+++ b/drivers/net/wireless/libertas/wext.c
@@ -788,7 +788,6 @@ static struct iw_statistics *lbs_get_wireless_stats(struct net_device *dev)
int stats_valid = 0;
u8 rssi;
u32 tx_retries;
- struct cmd_ds_802_11_get_log log;
lbs_deb_enter(LBS_DEB_WEXT);
@@ -830,13 +829,8 @@ static struct iw_statistics *lbs_get_wireless_stats(struct net_device *dev)
quality = rssi_qual;
/* Quality by TX errors */
- priv->wstats.discard.retries = dev->stats.tx_errors;
- memset(&log, 0, sizeof(log));
- log.hdr.size = cpu_to_le16(sizeof(log));
- lbs_cmd_with_response(priv, CMD_802_11_GET_LOG, &log);
-
- tx_retries = le32_to_cpu(log.retry);
+ tx_retries = priv->wstats.discard.retries;
if (tx_retries > 75)
tx_qual = (90 - tx_retries) * POOR / 15;
@@ -852,9 +846,9 @@ static struct iw_statistics *lbs_get_wireless_stats(struct net_device *dev)
(PERFECT - VERY_GOOD) / 50 + VERY_GOOD;
quality = min(quality, tx_qual);
- priv->wstats.discard.code = le32_to_cpu(log.wepundecryptable);
+// priv->wstats.discard.code = le32_to_cpu(log.wepundecryptable);
priv->wstats.discard.retries = tx_retries;
- priv->wstats.discard.misc = le32_to_cpu(log.ackfailure);
+// priv->wstats.discard.misc = le32_to_cpu(log.ackfailure);
/* Calculate quality */
priv->wstats.qual.qual = min_t(u8, quality, 100);
@@ -864,6 +858,9 @@ static struct iw_statistics *lbs_get_wireless_stats(struct net_device *dev)
/* update stats asynchronously for future calls */
lbs_prepare_and_send_command(priv, CMD_802_11_RSSI, 0,
0, 0, NULL);
+
+ lbs_prepare_and_send_command(priv, CMD_802_11_GET_LOG, 0,
+ 0, 0, NULL);
out:
if (!stats_valid) {
priv->wstats.miss.beacon = 0;
$ sudo apt-get install git-core $ sudo git apply libertas.patch
$ sudo cp /usr/src/linux-headers-2.6.31-14-generic/Module.symvers ./ $ sudo make modules_prepare $ sudo make M=drivers/net/wireless/libertas
$ sudo modprobe -r libertas_sdio libertas/lib/modules/2.6.31-14-generic/kernel/drivers/net/wireless/libertas/ に現在のドライバがあるので、(使わないと思いますが)一応バックアップしておきます。./drivers/net/wireless/libertas/ にビルドしたドライバ libertas.ko と libertas_sdio.ko が出来上がってるのでmodulesの方へコピーして、念のため depmod -a をしておきます。
Bus 004 Device 002: ID 16d8:6007 CMOTECH Co., Ltd.しかし、usbserialのドライバがまだ入っていないので、ttyUSB*が存在しません。ですので、まずはudevにドライバの組み込み設定をします。/etc/udev/rules.d/50-local.rules というファイルを作成して、次のような中身にします。
SUBSYSTEM=="usb", SYSFS{idProduct}=="6007", SYSFS{idVendor}=="16d8", RUN+="/sbin/modprobe usbserial vendor=0x16d8 product=0x6007"




$ sudo apt-get install build-essential kernel-package libncurses5-dev libqt3-mt-dev $ sudo apt-get install linux-source-2.6.28 $ cd /usr/src $ sudo tar xvjf linux-source-2.6.28.tar.bz2 $ cd linux-source-2.6.28 $ sudo cp /boot/config-2.6.28-15-generic .config $ sudo make oldconfig
参考サイト
dogmap.jp - カーネル再構築のススメ
参考サイト
Design Recipe 別館 Blog - Git の使い方の基本の"き"
/usr/src/linux-source-2.6.28/drivers/net/wireless/libertas/wext.c // priv->wstats.discard.code = le32_to_cpu(log.wepundecryptable); // priv->wstats.discard.misc = le32_to_cpu(log.ackfailure);2つ目:ヘッダーに依存するエラーが出るので頭の方に付け加えます。
/usr/src/linux-source-2.6.28/drivers/net/wireless/libertas/cmdresp.c #include <asm/unaligned.h>
$ sudo make-kpkg clean $ sudo make-kpkg --initrd --revision=test01 kernel_image kernel_headers以前は./script以下をいじって、ドライバだけビルドした記憶があるのですが、構成が変わってしまったのかファイルが見当たりませんでした。今回はカーネルの設定も変更したので、カーネルごとビルドしましたが、ドライバが目的ならlibertas関連だけビルドすれば大丈夫だと思います。
$ sudo modprobe -r libertas_sdio libertas/lib/modules/2.6.28-15-generic/kernel/drivers/net/wireless/libertas 以下にある現在のドライバをバックアップして、ビルドした libertas.ko と libertas_sdio.ko をコピーします。
Bus 004 Device 002: ID 16d8:6007 CMOTECH Co., Ltd.しかし、ttyUSBが存在しないことから、usbserialのドライバはまだ入っていないようです。
$ ls /dev/ttyUSB* ls: /dev/ttyUSB*にアクセスできません: No such file or directoryということで、まずはmodprobeでドライバを入れます。
$ sudo modprobe usbserial vendor=0x16d8 product=0x6007もう1度、ttyUSBを確認します。また3つ出てきました。
$ ls /dev/ttyUSB* /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2毎回入力するのは面倒なので、udevに組み込みます。/etc/udev/rules.d/50-local.rules というファイルを作成して、以下のような中身にします。
SUBSYSTEM=="usb", SYSFS{idProduct}=="6007", SYSFS{idVendor}=="16d8", RUN+="/sbin/modprobe usbserial vendor=0x16d8 product=0x6007"