diff --git a/hp2101nw_setup.pl b/hp2101nw_setup.pl index 3728f64ecef1a0648fbde1d57e85fc2255d0dfe2..09759292c12385eb2f19fcf21833a4bb359c1052 100755 --- a/hp2101nw_setup.pl +++ b/hp2101nw_setup.pl @@ -15,6 +15,14 @@ ## For the device protocol see: ## http://wiki.kainhofer.com/hardware/hp2101nw_wlan_printserver +## Supported devices: +## -) HP 2101nw wireless G USB print server (USB-id 03f0:cd02) +## +## Devices that seem to use a similar config format (but might not use USB at all): +## -) Linksys WPS54G-DE Wireless-G printserver 802.11g USB +## -) NetHawk RF-200A +## -) SMC2621W-U EZ Connect Wireless Print Server + use Device::USB; use Data::Dumper; @@ -598,18 +606,20 @@ sub print_wireless_networks ($) { sub wifi_ask_ssid ($) { - my $aps = shift; + my $dev = shift; + my $aps = scan_for_aps ($dev); print_wireless_networks ($aps); my @ssids = (sort {lc $a cmp lc $b} keys (%$aps)); my $newssid; print "Please enter the number or the SSID of the desired wireless network.\n"; - print "Enter '0', 'hidden' or 'h' to connect to a hidden network.\n"; + print "\tEnter '0', 'hidden' or 'h' to connect to a hidden network.\n"; + print "\tEnter 'r' or 'rescan' to rescan for wireless networks.\n"; do { print "Desired wireless network: "; $newssid = input (); return $newssid if (exists $aps->{$newssid}); if ($newssid =~ /^[1-9]\d*$/ && ($newssid <= scalar(@ssids))) { - return $ssids[$newssid-1]; + return ($aps,$ssids[$newssid-1]); } if ($newssid eq "0" || $newssid eq "h" || $newssid eq "hidden") { $newssid = ""; @@ -617,7 +627,10 @@ sub wifi_ask_ssid ($) { print "Please enter the SSID: "; $newssid = input (); } - return $newssid; + return ($aps,$newssid); + } + if ($newssid eq "r" || $newssid eq "rescan") { + return wifi_ask_ssid ($dev); } } while 1; # We'll jump out of the loop via return! } @@ -856,8 +869,7 @@ sub main () { debug ("\tSelected operation: %s\n", $operation); if ($operation eq "wifi_infrastructure") { # Infrastructure, scan for APs - my $aps = scan_for_aps ($dev); - my $newap = wifi_ask_ssid ($aps); + my ($aps,$newap) = wifi_ask_ssid ($dev); my %newconfig = ('SSID' => $newap); debug ("\tSelected wireless network: %s\n", $newap); my %security = wifi_ask_security ($newap, $aps);