Tagged: wireless

Wifi Disabled on HP Pavilion dm3 – Debian 9 (Stretch)

This happened before with Arch Linux, but when I installed Debian 9 (Stretch) on my HP Pavilion dm3-113us, its wifi device was disabled - there is a wifi button on the side and its LED indicator was orange instead of green.

The system seems to recognize the device:$ lspci ... 08:00.0 Network controller: Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) (rev 01) # dmesg | grep -i ath ... [ 0.092000] smpboot: CPU0: AMD Athlon(tm) Neo X2 Dual Core Processor L335 (family: 0xf, model: 0x6b, stepping: 0x2) [ 11.533147] powernow_k8: Found 1 AMD Athlon(tm) Neo X2 Dual Core Processor L335 (2 cpu cores) (version 2.20.00) [ 11.672233] ath: phy0: Enable LNA combining [ 11.674887] ath: phy0: ASPM enabled: 0x42 [ 11.674890] ath: EEPROM regdomain: 0x69 [ 11.674891] ath: EEPROM indicates we should expect a direct regpair map [ 11.674894] ath: Country alpha2 being used: 00 [ 11.674895] ath: Regpair used: 0x69 [ 11.727078] ieee80211 phy0: Atheros AR9285 Rev:2 mem=0xffffb12042140000, irq=17 [ 13.125760] ath9k 0000:08:00.0 wlo1: renamed from wlan0 ...

It looks like necessary kernel modules were loaded as well:# lsmod ... ath 32768 3 ath9k_hw,ath9k,ath9k_common ath9k 94208 0 ath9k_common 32768 1 ath9k ath9k_hw 446464 2 ath9k,ath9k_common ...

I tried resetting BIOS or following weird steps like taking a battery out and booting it up, etc... but none worked.

I was almost giving up getting the wifi device to work, then I found this website that eventually led me to solve the problem. This site shows how to identify a wifi device (internal or usb), search its firmware driver, and install it.

Hmm... firmware, huh? I have not tried this option so I gave it a shot.

Disclaimer:
The information in this site is the result of my researches in the Internet and of my experiences. This information below is solely used for my purpose and may not be suitable for others.

First, let's search any firmware for my atheros:# apt-cache search atheros collectd-core - statistics collection and monitoring daemon (core system) firmware-linux-free - Binary firmware for various drivers in the Linux kernel firmware-atheros - Binary firmware for Atheros wireless cards firmware-zd1211 - binary firmware for the zd1211rw wireless driver

Yes, there are some hits. Based on their description, I installed firmware-atheros first: # apt-get install firmware-atheros ... Unpacking firmware-atheros ... Setting up firmware-atheros ...

I rebooted the system just in case.

My default Desktop Environment is LXDE (though I'll change it to i3 later) and it comes with wicd application. From wicd, I clicked on the Switch On Wi-Fi option. Nope, it did not enable the wifi device. So, I went back to the firmware list and decided to install another one.

firmware-zd1211 doesn't seem to be for my wifi device. Let's try with firmware-linux-free:# apt-get install firmware-linux-free ... Setting up firmware-linux-free (3.4) ... Update-initramfs: deferring update (trigger activated) Processing triggers for initramfs-tools (0.130) ... Update-initramfs: Generating /boot/initrd.img-4.9.0-3-amd64

A moment of truth... I clicked on the Switch On Wi-Fi option again. Yes, a little LED light for Wifi on the side of my laptop changed from orange to blue, which indicates the wifi device is now enabled!

Now the wifi device is enabled after rebooting.

NOTE: The order and combinations to install these firmware seem to matter. I tried below scenarios:

1. Installed firmware-atheros
2. Installed firmware-linux-free
AND
1. Installed firmware-linux-free
2. Installed firmware-atheros
AND
1. Installed firmware-atheros ONLY
AND
1. Installed firmware-linux-free ONLY

The wifi device was successfully enabled in the 1st scenario but it didn't work for everything else. So, just be careful!

At the very beginning of this post, I mentioned same wifi device didn't work with Arch Linux. Maybe, I needed a firmware for it to work just like this one. When I get a chance, I'll try that option. But for now, I'm very satisfied with the outcome.

That's all!
-gibb

Adding Another Wirelesss Router Along with Verizon (FIOS) Actiontec Router

I admit. I didn't care much about WiFi signal strength or range for my cellphone because I had the unlimited data plan from Verizon. But my way of thinking now needs to be changed as my old HTC thunderbolt started acting up to the point where I could no longer tolerate (it sometimes takes 15 mins to start making a call after inputting numbers, on-screen keyboard doesn't input anything, etc...). So finally I decided to upgrade my device and plan.

As I started using WiFi at home, I realized the WiFi signal didn't cover all the rooms and somehow I needed to extend the signal range. The best way would be to relocate my current Actiontec router from Verizon somewhere center of the house but this was not an option for me. Another way was to use another wireless router as AP (Access Point) along with Actiontec router. Luckily, I still had ASUS Wireless router (RT-N56U) that I used to use before FIOS and used it to extend the WiFi signal range.

Here is the steps that I took to configure the primary router (Actiontec) and secondary router (ASUS).

Disclaimer:
The information in this site is the result of my researches in the Internet and of my experiences. It is solely used for my purpose and may not be suitable for others. I will NOT take any responsibilities of end result after following these steps (although I will try to help if you send me your questions/problems).

Configuring the Primary Router (Actiontec)

1) First thing first, disconnect all patch cables connected to the primary router except the one system used to configure it. This step involves changing DHCP address range, so it's better to turn off any devices using wireless connection and reset the primary router to start off with clean state.

2) Access the configuration page of the primary router from web browser pointing to http://192.168.1.1.

3) Once successfully logged in, go to My NetworkNetwork ConnectionNetwork (Home/Office) then click on the Settings button. Scroll down a bit and locate IP Address Distribution.

IP Address Distribution: DHCP Server
Start IP Address: 192.168.1.6
End IP Address: 192.168.1.254
Subnet Mask: 255.255.255.0

Actiontech_DHCP

The starting IP address I used was 6. This is because address 1 is reserved for the IP address for the primary router. Address 2 is for the secondary router and I have some other devices that I wanted to use static IP address (ex: my primary system, printer, etc...).

4) Click Apply, then click Apply again.

5) Now set up the static IP address for the secondary router, my primary system and printer. Go to Advanced → Click on YesIP Address DistributionConnection ListNew Static Connection

Make sure the physical address (MAC address) is available for each system configuring for static IP address

6) Make sure that the system still has the Internet connection.

Configuring the Secondary Router (ASUS)

7) Unplug the patch cable from the primary router and plug it in the LAN port of the secondary router. Then restart networking. I used my notebook with Debian and below is the commands: # /etc/init.d/networking stop # /etc/init.d/networking start

8) Again, access the configuration page of the secondary router from web browser pointing to http://192.168.1.1.

9) Now configure this secondary router as Access Point (AP). There are two ways to do this:

i. Setting Up AP Mode: I updated its firmware to 3.0.0.4.376_1665 and AP mode became available.

Go to Administration and make sure Access Point(AP) mode is selected.

ASUS_AP1

Set up static IP address for this router.

IP Address: 192.168.1.2
Subnet Mask: 255.255.255.0
Default Gateway: 192.168.1.1

ASUS_AP2

Then set up wireless, such as SSID, Network Key, etc...

ii. Setting Up Manually: Manual setting is not difficult. All you need to do is to setup the static IP address and disable DHCP.

Set up the static IP address for the secondary router. Go to LAN under the Advanced Settings → LAN IP

IP Address: 192.168.1.2
Subnet Mask: 255.255.255.0

ASUS_MAN1

Now disable DHCP. Go to LANDHCP Server and make sure Enable the DHCP Server is set to No

ASUS_MAN2

Let's Connect Two Routers

10) Connect a patch cable from a LAN port on the primary router to a LAN port on the secondary router. At this point, I can connect to the configuration page of the primary router via http://192.168.1.1 and that of the secondary router via http://192.168.1.2.

That's all!
-gibb

Installing Arch Linux on LVM

A good friend of mine gave me his not-needed notebook (HP Pavilion dm3-1130us) since my 10+-year-old notebook started acting up and became unstable. It got a dual-core AMD chipset with 64bit support. Good enough as a spare machine for the road.

I have been a Slackware user for a while and that's what I use on my home system and old notebook. But for this time, I wanted to try other distributions. After a quick research, I decided to go with Arch Linux. I liked its philosophy and simplicity. It seems very stable as well. That's a plus.

Don't get me wrong, I'm still a fan of slackware. I just wanted to see what else is out there.

I decided to use LVM for Arch Linux because I want to try full system encryption (dm-crypt with LUKS) later on. It seems LVM on LUKS is a growing preference nowadays.

Disclaimer:
Information below is gathered mostly from the Arch Linux Wiki page and changed here and there for my liking. This information below is solely used for my purpose and may not be suitable for others.

Configure Wireless Network:

Network connection needs to be configured before the installation can take a place. Since my notebook uses WiFi, I need to configure wireless network.

Check for the network interface and whether udev has loaded the driver. # iwconfig -------------------- eth0 no wireless extensions. lo no wireless extensions. wlan0 IEE 802.11bgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=14 dBm Retry long limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:on

It looks like wlan0 is available.

Interface activation:

Not required for mine but here is how to activate # ip link set wlan0 up

Access point discovery:

I know my network information like ESSID, Encryption key, etc..., but here is how to list available access points # iwlist wlan0 scan | less

Or, for the new netlink interface # iw dev wlan0 scan | less

Association to the access point

Now a configuration file, /etc/wpa_supplicant.conf, needs to be created for my access point. # vi /etc/wpa_supplicant.conf -------------------- ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel eapol_version=1 ap_scan=1 fast_reauth=1

These options are explained in /etc/wpa_supplicant/wpa_supplicant.conf

Append the passphrase and PSK to the file # wpa_passphrase SSID_NAME "PASSPHRASE" >> /etc/wpa_supplicant.conf

Manual connection:

The WiFi interface should be up by the earlier command ip link set wlan0 up, so now tell wpa_supplicant the driver (wext - Linux Wireless EXTensions), the SSID specified in /etc/wpa_supplicant.conf and the wireless interface. # wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf

  • -B : Run in the background
  • -D : Driver information. Default is WEXT
  • -i : Wireless interface
  • -c : Configuration file

Request an IP address to DHCP server. # dhcpcd wlan0

Check assigned IP address. # ip addr show wlan0 wlan0: mtu 1500 qdisc mq state UP qlen 1000 link/ether 00:00:00:00:00:00: brb ff:ff:ff:ff:ff:ff inet 192.168.1.6/24 brb 192.168.1.255 scope global wlan0 inet6 fe80::ffff:ffff:ffff:ffff/64 scope link valid_lft forever preferred_lft forever

Load the module:

dm-mod needs to be loaded before doing anything with LVM # modprobe dm-mod

Partition a Disk:

# fdisk /dev/sda

Partition Layout:
/dev/sda1 -> LVM

Since I'm using GRUB2, the /boot partition is also included in the LVM partition.

Create Physical Volume:

Initialize these partitions so they can be used by LVM. # pvcreate /dev/sda3

Create Volume Groups:

Create a volume group on this physical volume. Volume group name is lvm. # vgcreate lvm /dev/sda3

Create Logical Volumes:

Create logical volumes on this new volume group. # lvcreate -L 100M -n boot lvm # lvcreate -L 10G -n root lvm # lvcreate -L 500M -n swap lvm # lvcreate -l 100%FREE -n home lvm

Configure block devices, filesystems, and mountpoints:

# mkfs.ext4 /dev/mapper/lvm-boot # mkfs.ext4 /dev/mapper/lvm-root # mkfs.ext4 /dev/mapper/lvm-home # mkswap /dev/mapper/lvm-swap # swapon /dev/mapper/lvm-swap # mount /dev/mapper/lvm-root /mnt # mkdir /mnt/boot # mount /dev/mapper/lvm-boot /mnt/boot # mkdir /mnt/home # mount /dev/mapper/lvm-home /mnt/home

If there are no logical volumes under /dev/mapper, run next commands to bring up the modules and to make volume group available: # modprobe dm-mod # vgscan # vgchange -ay

  • vgscan: Scans all disks for volume groups and re-builds caches
  • vgchange -ay: Makes the logical volumes known to the kernel

Select installation mirror:

Before installing, you may want to edit /etc/pacman.d/mirrorlist such that your preferred mirror is first. This copy of the mirrorlist will be installed on your new system by pacstrap as well, so it's worth getting it right.

Install the base system and other package groups:

The base system is installed using the pacstrap script. pacstrap is a script that installs packages to the specified new root directory. If no packages are given, pacstrap defaults to the "base" group.

Required X Window Systems packages for openbox will be installed in post-installation configuration

The system uses wireless network, so install the required wireless network packages. # pacstrap /mnt base base-devel wireless_tools netcfg wpa_supplicant wpa_actiond

Generate an fstab file

The fstab file contains static filesystem information. It defines how storage devices and partitions are to be mounted and integrated into the overall system. It is read by the mount command to determine which options to use when mounting a specific device or partition.

Most likely swap partition will have wrong filesystem name, so this needs to be changed. # genfstab -p /mnt >> /mnt/etc/fstab # vi /mnt/etc/fstab -------------------- ... /dev/mapper/lvm-swap none swap defaults 0 0

Chroot into the system

# arch-chroot /mnt

Configuring the System

Let's configure the primary configuration files

/etc/rc.conf is the configuration file for Arch's initscripts. Some of options in this file has been obsolete and they now have own configuration files (ex: hostname, etc...). /etc/rc.conf still configures daemons to start during boot-up and some networking and storage information.

Editing /etc/rc.conf:

Since LVM is used on this system, I need to enable it so that the kernel knows about it # vi /etc/rc.conf -------------------- USELVM="yes"

Hostname:

Configuring hostname requires updating two files, /etc/hostname and /etc/hosts

Add hostname in /etc/hostname # cat > /etc/hostsname arch64 ^D

Add hostname in /etc/hosts # vi /etc/hosts -------------------- 127.0.0.1 localhost.localdomain localhost arch64 ::1 localhost.localdomain localhost arch64

Console fonts and keymap:

The console, meaning a terminal running with no X Window System, uses the ASCII character set as the default.

A console font is limited to either 256 or 512 characters. The fonts are found in /usr/share/kbd/consolefonts/.

Keymaps, the connection between the key pressed and the character used by the computer, are found in the subdirectories of /usr/share/kbd/keymaps/ # cat > /etc/vconsole.conf KEYMAP=us FONT= FONT_MAP= ^D

  • KEYMAP - the default (us) is ok
  • FONT - the default (blank) is ok
  • FONT_MAP - the default (blank) is ok

Timezone:

Available time zones and subzones can be found in the /usr/share/zoneinfo/<Zone>/<SubZone> directories.

Create a symlink /etc/localtime to zone file # ln -s /usr/share/zoneinfo/US/Eastern /etc/localtime

Locale:

Choose the locale(s) from /etc/locale.gen and uncomment them. # vi /etc/locale.gen -------------------- en_US.UTF-8 UTF-8 -------------------- # locale-gen

Setting up system-wide locale:

# cat > /etc/locale.conf LANG=en_US.UTF-8 LC_TIME=en_US.UTF-8 ^D

Set the LANG variable for the ramdisk creation # export LANG=en_US.UTF-8

Hardware clock time:

It's recommended to use UTC. # hwclock --systohc --utc

Configuring wireless network:

Copy wireless-wpa from /etc/network.d/examples/ to /etc/network.d and rename it something else. This will be a template for my profile. Open it and change ESSID to my SSID name. Delete everything below ESSID. The KEY value needs to be a hex string so it'll be generated by using the wpa_passphrase command: # wpa_passphrase SSID_NAME "PASSPHRASE" >> /etc/network.d/[profile_name]

Open the profile and delete the lines starting with network={, ssid=, #psk=, and }, leaving only the psk line. Then change this psk to KEY, and add IP='dhcp' to the bottom of the line: cat /etc/network.d/[profile_name] -------------------- CONNECTION='wireless' DESCRIPTION='WPA encrypted wireless connection' INTERFACE='wlan0' SECURITY='wpa' ESSID=[SSID_name] KEY=[hex_string_for_passphrase] IP='dhcp'

Now, connect to the profile: # netcfg [profile_name]

If no errors, it should display :: [profile_name] up

Configure the rc.conf file for auto connecting to the wireless network after each reboot: vi /etc/rc.conf -------------------- DAEMONS=(... net-auto-wireless ...)

Make sure /etc/conf.d/netcfg has the following values: cat /etc/conf.d/netcfg -------------------- NETWORKS=(last) WIRELESS_INTERFACE="wlan0"

Create an initial ramdisk environment:

Configure /etc/mkinitcpio.conf for LVM by adding lvm2 in the HOOKS section before filesystems so that the kernel will find LVM volumes at boot time. # vi /etc/mkinitcpio.conf -------------------- HOOKS="...lvm2 filesystems..."

Now generate the kernel image. # cd /boot # mkinitcpio -p linux

Install and configure a bootloader:

# pacman -S grub-bios # grub-install --target=i386-pc --recheck /dev/sda

Create a grub configuration file. # grub-mkconfig -o /boot/grub/grub.cfg

Root password:

Set the root password now # passwd

Unmount the partitions and reboot:

Exit from the chroot environment. # exit

Since the partitions are mounted under /mnt, unmount them. # umount /mnt/{boot,home,}

Exit the install and reboot. # reboot

Post-Installation

Updating the system:

Sync, refresh, and upgrade the entire new system. # pacman -Syu (or pacman --sync --refresh --sysupgrade)

Pacman will now download a fresh copy of the master package list from the server(s) defined in /etc/pacman.conf and perform all available upgrades.

Pacman output is saved in /var/log/pacman.log

Adding a user:

Now add a normal user account for daily tasks # useradd -m -g users -G audio,games,log,lp,optical,power,scanner,storage,video,wheel -s /bin/bash ubyt3m3

Set a password for ubyt3m3 # passwd ubyt3m3

X Window System:

The X Window System (commonly X11, or X) is a networking and display protocol which provides windowing on bitmap displays. It provides the standard toolkit and protocol to build graphical user interfaces (GUIs).

Now install the base Xorg packages using pacman. # pacman -S xorg-server xorg-xinit xorg-server-utils

Install video driver:

My system came with ATI Graphics Card, so install the open source raden driver. # pacman -S xf86-video-ati

Install input driver:

Since this install is for notebook, following package is needed for touchpad. # pacman -S xf86-input-synaptics

Testing X:

Install the default environment. # pacman -S xorg-twm xorg-xclock xterm

Fonts

Install a set of TrueType fonts, as only unscalable bitmap fonts are included by default. DejaVu is a set of high quality. # pacman -S ttf-dejavu

That's the very base system. Installation and configuration of other software will be in another time.

That's all!
-gibb