Hey,
I think I might have found the root cause of the problem with the Intel
Corporation WiFi Link 5100, On a Dell Laptop 1750, I'm going to present
this in the order i did it...
Googling around in Android X86 4.4.2 RC2, I found This Command (This Was
for linux, but worked)
Wi-Fi State was on at the time:
***@x86:/ # dmesg | grep -e ipw -e wlan0
<6>[ 48.494513] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
<6>[ 51.958692] wlan0: authenticate with 98:0c:82:44:46:c2
<6>[ 51.962519] wlan0: send auth to 98:0c:82:44:46:c2 (try 1/3)
<6>[ 51.965346] wlan0: authenticated
<6>[ 51.970051] wlan0: associate with 98:0c:82:44:46:c2 (try 1/3)
<6>[ 51.973497] wlan0: RX AssocResp from 98:0c:82:44:46:c2 (capab=0x411
status=0 aid=1)
<6>[ 51.976309] wlan0: associated
<6>[ 51.976341] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
So at this point I got to wondering about the FN-F2 Toggle for the Wi-Fi so
I Did the key Combo and the Wi-Fi SHUT-OFF!!!! This Surprised me, Went to
do it again, and it wouldn't turn back on!!!!\
So I Did The Above Command Again While Wi-Fi Was Off:
127|***@x86:/ # dmesg | grep -e ipw -e wlan0
<6>[ 48.494513] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
<6>[ 51.958692] wlan0: authenticate with 98:0c:82:44:46:c2
<6>[ 51.962519] wlan0: send auth to 98:0c:82:44:46:c2 (try 1/3)
<6>[ 51.965346] wlan0: authenticated
<6>[ 51.970051] wlan0: associate with 98:0c:82:44:46:c2 (try 1/3)
<6>[ 51.973497] wlan0: RX AssocResp from 98:0c:82:44:46:c2 (capab=0x411
status=0 aid=1)
<6>[ 51.976309] wlan0: associated
<6>[ 51.976341] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
<6>[ 1197.351419] wlan0: deauthenticating from 98:0c:82:44:46:c2 by local
choice (reason=3)
<6>[ 1197.351472] wlan0: HW problem - can not stop rx aggregation for
98:0c:82:44:46:c2 tid 0
<3>[ 1197.351554] wlan0: failed to remove key (0, 98:0c:82:44:46:c2) from
hardware (-5)
<3>[ 1197.351674] wlan0: failed to remove key (1, ff:ff:ff:ff:ff:ff) from
hardware (-5)
<3>[ 1197.351692] wlan0: failed to remove key (2, ff:ff:ff:ff:ff:ff) from
hardware (-5)
Now this got me thinking, Could it Simply be That The "ON" Switch is not
correctly configured???
If looked into RFKILL, And am Totally lost, RFKILL returns Not Found, I've
Come across a bunch of scripts, and have even hacked into initrd.img and
ramdisk.img but really don't knbow nothing about Inserting these things
in,,,,
Here is what I've found and maybe you can direct me on how to implement
this:
This I Believe was from a Git
rfkill - RF switch subsystem support
====================================
1 Implementation details
2 Driver support
3 Userspace support
===============================================================================
1: Implementation details
The rfkill switch subsystem offers support for keys often found on laptops
to enable wireless devices like WiFi and Bluetooth.
This is done by providing the user 3 possibilities:
1 - The rfkill system handles all events; userspace is not aware of events.
2 - The rfkill system handles all events; userspace is informed about the
events.
3 - The rfkill system does not handle events; userspace handles all events.
The buttons to enable and disable the wireless radios are important in
situations where the user is for example using his laptop on a location
where
wireless radios _must_ be disabled (e.g. airplanes).
Because of this requirement, userspace support for the keys should not be
made mandatory. Because userspace might want to perform some additional
smarter
tasks when the key is pressed, rfkill still provides userspace the
possibility
to take over the task to handle the key events.
The system inside the kernel has been split into 2 separate sections:
1 - RFKILL
2 - RFKILL_INPUT
The first option enables rfkill support and will make sure userspace will
be notified of any events through the input device. It also creates several
sysfs entries which can be used by userspace. See section "Userspace
support".
The second option provides an rfkill input handler. This handler will
listen to all rfkill key events and will toggle the radio accordingly.
With this option enabled userspace could either do nothing or simply
perform monitoring tasks.
====================================
2: Driver support
To build a driver with rfkill subsystem support, the driver should
depend on the Kconfig symbol RFKILL; it should _not_ depend on
RKFILL_INPUT.
Unless key events trigger an interrupt to which the driver listens, polling
will be required to determine the key state changes. For this the input
layer providers the input-polldev handler.
A driver should implement a few steps to correctly make use of the
rfkill subsystem. First for non-polling drivers:
- rfkill_allocate()
- input_allocate_device()
- rfkill_register()
- input_register_device()
For polling drivers:
- rfkill_allocate()
- input_allocate_polled_device()
- rfkill_register()
- input_register_polled_device()
When a key event has been detected, the correct event should be
sent over the input device which has been registered by the driver.
====================================
3: Userspace support
For each key an input device will be created which will send out the correct
key event when the rfkill key has been pressed.
The following sysfs entries will be created:
name: Name assigned by driver to this key (interface or driver name).
type: Name of the key type ("wlan", "bluetooth", etc).
state: Current state of the key. 1: On, 0: Off.
claim: 1: Userspace handles events, 0: Kernel handles events
Both the "state" and "claim" entries are also writable. For the "state"
entry
this means that when 1 or 0 is written all radios, not yet in the requested
state, will be will be toggled accordingly.
For the "claim" entry writing 1 to it means that the kernel no longer
handles
key events even though RFKILL_INPUT input was enabled. When "claim" has been
set to 0, userspace should make sure that it listens for the input events or
check the sysfs "state" entry regularly to correctly perform the required
tasks when the rkfill key is pressed.
This From a Linux Board:
Thanks for your answer! acpid is not installed on my system and to be
honest, I don't want to install another service just for this single
hotkey. But I will take that method into consideration, if I can't find
anything else.
Using...
echo 1 > /sys/devices/platform/thinkpad_acpi/bluetooth_enable
...I'm still missing the sufficient permissions.
There MUST be a way to toggle bluetooth without root permissions and
_without_ using acpid, since bluetooth-applet can do this without root
permissions and without acpid?!
This is, how bluetooth-applet manages the Bluetooth-Killswitch:
http://pastebin.com/3U4VKLtY
This inspired me to install "rfkill". And now
I finally found a solution!
#!/bin/bash
BT_RFKILL=$(rfkill list | grep tpacpi_bluetooth_sw | sed
's/\([0-9]\+\):.*/\1/')
BT_STATE=$(/sbin/rfkill list $BT_RFKILL | grep "Soft blocked: yes")
if [ "x" == "x$BT_STATE" ]; then
/sbin/rfkill block $BT_RFKILL
else
/sbin/rfkill unblock $BT_RFKILL
fi
exit 0
--------------------------------------------------------------------------------
David Batson31st December 2011, 03:48 PM
Using your rfkill script, I was able to toggle bluetooth as well.
As root, I created the file /etc/acpi/actions/bluetooth.sh with the
contents of your rfkill script. I then made the file executable from
Nautilus as root by changing permissions.
Next I ran acpi_listen in terminal to see what Fn+F9 showed. I was getting
button/f24 F24 00000080 00000000. I then created the file
/etc/acpi/events/bluetoothconf as root with the following contents:
event=button/f24.*
action=/etc/acpi/actions/bluetooth.sh
Finally I ran #acpid restart. Now my hotkey combo toggles the bluetooth
radio on and off. :)
An alternative for some might be to create a custom keyboard shortcut in
System Settings > Keyboard > Shortcuts > Custom Shortcuts, however this was
not working for me with the Fn+F9 shortcut.
EDIT: After reboot I got some SELinux alerts. Had to run audit2allow 3
times (IIRC) to get SELinux to allow the rfkill script to run.
--------------------------------------------------------------------------------
vBulletin® v3.8.7, Copyright ©2000-2014, vBulletin Solutions, Inc.
And this Is the File I dob't Know what do do with, but i think needs to be
in intitrc:
/* vi: set sw=4 ts=4: */
/*
* rfkill implementation for busybox
*
* Copyright (C) 2010 Malek Degachi <malek-degachi-QFKgK+***@public.gmane.org>
*
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
//config:config RFKILL
//config: bool "rfkill"
//config: default n # doesn't build on Ubuntu 9.04
//config: select PLATFORM_LINUX
//config: help
//config: Enable/disable wireless devices.
//config:
//config: rfkill list : list all wireless devices
//config: rfkill list bluetooth : list all bluetooth devices
//config: rfkill list 1 : list device corresponding to the given index
//config: rfkill block|unblock wlan : block/unblock all wlan(wifi) devices
//config:
//applet:IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP))
//kbuild:lib-$(CONFIG_RFKILL) += rfkill.o
//usage:#define rfkill_trivial_usage
//usage: "COMMAND [INDEX|TYPE]"
//usage:#define rfkill_full_usage "\n\n"
//usage: "Enable/disable wireless devices\n"
//usage: "\nCommands:"
//usage: "\n list [INDEX|TYPE] List current state"
//usage: "\n block INDEX|TYPE Disable device"
//usage: "\n unblock INDEX|TYPE Enable device"
//usage: "\n"
//usage: "\n TYPE: all, wlan(wifi), bluetooth, uwb(ultrawideband),"
//usage: "\n wimax, wwan, gps, fm"
#include "libbb.h"
#include <linux/rfkill.h>
enum {
OPT_b = (1 << 0), /* must be = 1 */
OPT_u = (1 << 1),
OPT_l = (1 << 2),
};
int rfkill_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int rfkill_main(int argc UNUSED_PARAM, char **argv)
{
struct rfkill_event event;
const char *rf_name;
int rf_fd;
int mode;
int rf_type;
int rf_idx;
unsigned rf_opt = 0;
argv++;
/* Must have one or two params */
if (!argv[0] || (argv[1] && argv[2]))
bb_show_usage();
mode = O_RDWR | O_NONBLOCK;
rf_name = argv[1];
if (strcmp(argv[0], "list") == 0) {
rf_opt |= OPT_l;
mode = O_RDONLY | O_NONBLOCK;
} else if (strcmp(argv[0], "block") == 0 && rf_name) {
rf_opt |= OPT_b;
} else if (strcmp(argv[0], "unblock") == 0 && rf_name) {
rf_opt |= OPT_u;
} else
bb_show_usage();
rf_type = RFKILL_TYPE_ALL;
rf_idx = -1;
if (rf_name) {
static const char rfkill_types[] ALIGN1 =
"all\0wlan\0bluetooth\0uwb\0wimax\0wwan\0gps\0fm\0";
if (strcmp(rf_name, "wifi") == 0)
rf_name = "wlan";
if (strcmp(rf_name, "ultrawideband") == 0)
rf_name = "uwb";
rf_type = index_in_strings(rfkill_types, rf_name);
if (rf_type < 0) {
rf_idx = xatoi_positive(rf_name);
}
}
rf_fd = device_open("/dev/rfkill", mode);
if (rf_fd < 0)
bb_perror_msg_and_die("/dev/rfkill");
if (rf_opt & OPT_l) {
while (full_read(rf_fd, &event, sizeof(event)) == RFKILL_EVENT_SIZE_V1) {
parser_t *parser;
char *tokens[2];
char rf_sysfs[sizeof("/sys/class/rfkill/rfkill%u/uevent") + sizeof(int)*3];
char *name, *type;
if (rf_type && rf_type != event.type && rf_idx < 0) {
continue;
}
if (rf_idx >= 0 && event.idx != rf_idx) {
continue;
}
name = NULL;
type = NULL;
sprintf(rf_sysfs, "/sys/class/rfkill/rfkill%u/uevent", event.idx);
parser = config_open2(rf_sysfs, fopen_for_read);
while (config_read(parser, tokens, 2, 2, "\n=", PARSE_NORMAL)) {
if (strcmp(tokens[0], "RFKILL_NAME") == 0) {
name = xstrdup(tokens[1]);
continue;
}
if (strcmp(tokens[0], "RFKILL_TYPE") == 0) {
type = xstrdup(tokens[1]);
continue;
}
}
config_close(parser);
printf("%u: %s: %s\n", event.idx, name, type);
printf("\tSoft blocked: %s\n", event.soft ? "yes" : "no");
printf("\tHard blocked: %s\n", event.hard ? "yes" : "no");
free(name);
free(type);
}
} else {
memset(&event, 0, sizeof(event));
if (rf_type >= 0) {
event.type = rf_type;
event.op = RFKILL_OP_CHANGE_ALL;
}
if (rf_idx >= 0) {
event.idx = rf_idx;
event.op = RFKILL_OP_CHANGE;
}
/* Note: OPT_b == 1 */
event.soft = (rf_opt & OPT_b);
xwrite(rf_fd, &event, sizeof(event));
}
return EXIT_SUCCESS;
}
Sorry to post this and not ATTACH it but it says it's not allowed....
Any Ideas?? I've OBVIOUSLY Done alot of research to get this
far................
Mike
Post by Chih-Wei HuangThe 4.4-RC2 is released.
http://www.android-x86.org/releases/releasenote-4-4-rc2
I encourage all users of previous version
upgrade to this version.
--
Chih-Wei
Android-x86 project
http://www.android-x86.org
--
You received this message because you are subscribed to the Google Groups "Android-x86" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-x86+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To post to this group, send email to android-x86-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
Visit this group at http://groups.google.com/group/android-x86.
For more options, visit https://groups.google.com/d/optout.