Cheap Cisco SRE-900 RAM Upgrade to 8GB

I picked up a Cisco SRE-900 module off eBay a while ago to try out the WLC and SRE-V (VMWare ESXi) software. This module plugs into an ISR G2 router’s SM slot. It comes with a 1.8Ghz processor and 4GB of RAM, plenty to run the WLC (overkill really) or OK to run ESXi.

Image

After seeing the potential for ESXi on it, I picked up an SRE-300 for the WLC software and dedicated the SRE-900 for ESXi. The issue I hit was that the RAM it came with was very limiting on how many VMs I could run. I googled around to see if anyone else had upgraded their system with generic RAM (the Cisco part numbers were extremely expensive) but couldn’t find any examples. With this in mind I wanted to keep the cost low in case the system rejected the RAM I purchased. So I picked up 2 4GB DDR2 PC-5300 VLP modules off eBay for ~$50 together.

Image

The generic modules went into the SRE-900 without issue and when I booted it up in the router it confirmed that it was all accounted for:

DDR Memory 8192 MB detected

Intel(R) Core(TM)2 Duo CPU L9400 @ 1.86GHz
BIOS SM 3.52.8, BIOS Build date: 02/08/2011

Intel(R) Core(TM)2 Duo CPU L9400 @ 1.86GHz
BIOS SM 3.52.8, BIOS Build date: 02/08/2011
System now booting...

Next up… 16GB of RAM. Well, if the processor/storage don’t become the bottlenecks as I deploy more VMs.

Advertisements

Switch from AIR-CAP3602E-A-K9 Cisco Lightweight Access Point (LWAPP) to Autonomous Access Point

I had a lot of issues following the instructions from Cisco with my 3602E AP, it just wouldn’t boot off of the TFTP image I placed on another Cisco device. I could easily access the image from another device, but the AP wouldn’t pull it automatically when holding down the mode button and booting. After a while I found the instructions for doing this manually here: https://supportforums.cisco.com/docs/DOC-14636

I went through the steps and everything worked out perfectly. I am posting a write up of this to hopefully make it a bit easier to find when searching.

Manually Loading the Image

  • First, boot into ROMMON recovery. You can do this by using the mode button and if it fails the auto install off TFTP, it boots into recovery. Or you can press ESC when it starts to load the LWAPP image (it’ll ask if you want to interrupt when it starts).
IOS Bootloader - Starting system.
flash is writable
FLASH CHIP: Numonyx Mirrorbit (0089)
Xmodem file system is available.
flashfs[0]: 5 files, 3 directories
flashfs[0]: 0 orphaned files, 0 orphaned directories
flashfs[0]: Total bytes: 31997952
flashfs[0]: Bytes used: 7015424
flashfs[0]: Bytes available: 24982528
flashfs[0]: flashfs fsck took 13 seconds.
Reading cookie from SEEPROM
Base Ethernet MAC address: fc:99:47:c8:56:d6
Ethernet speed is 1000 Mb - FULL Duplex
Mode button pressed.
Mode button held for at least 20 seconds.
process_config_recovery: set IP address and config to default 10.0.0.1
process_config_recovery: image recovery
image_recovery: Download default IOS tar image t<a href="ftp://255.255.255.255/ap3g2-k9w7-tar.default">ftp://255.255.255.255/ap3g2-k9w7-tar.default</a>

examining image…
DPAA Set for Independent Mode
DPAA_INIT = 0x0

%Error opening t<a href="ftp://255.255.255.255/ap3g2-k9w7-tar.default">ftp://255.255.255.255/ap3g2-k9w7-tar.default</a> (connection timed out)ap:
  • Next you need to assign an IP and initialize tftp, network and the flash memory. When assigning an IP, it needs to be in the same subnet as the TFTP server or your router needs a route to the TFTP server.
<strong>ap: set IP_ADDR 10.0.0.1</strong>
<strong>ap: set NETMASK 255.255.255.0</strong>
<strong>ap: set DEFAULT_ROUTER 10.0.0.2</strong>
<strong>ap: tftp_init</strong>
<strong>ap: ether_init</strong>
Initializing ethernet port 0…
Ethernet speed is 1000 Mb - FULL Duplex
<strong>ap: flash_init</strong>
Initializing Flash…
...The flash is already initialized.
  • Now for the long part. You need to extra the image from the TFTP server to the local flash. Replace the IP and image name with the appropriate information. This may take up to an hour, the process goes very slowly over TFTP (at least it does if the TFTP server is a Cisco switch).
<strong>ap: tar -xtract t<a href="ftp://10.0.0.2/ap3g2-k9w7-tar.152-2.JB.tar">ftp://10.0.0.2/ap3g2-k9w7-tar.152-2.JB.tar</a> flash:</strong>

extracting info (283 bytes)
ap3g2-k9w7-mx.152-2.JB/ (directory) 0 (bytes)
extracting ap3g2-k9w7-mx.152-2.JB/ap3g2-k9w7-mx.152-2.JB (203061 bytes).......................................…..
ap3g2-k9w7-mx.152-2.JB/html/ (directory) 0 (bytes)
ap3g2-k9w7-mx.152-2.JB/html/level/ (directory) 0 (bytes)
ap3g2-k9w7-mx.152-2.JB/html/level/1/ (directory) 0 (bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/appsui.js (563 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/back.shtml (512 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/cookies.js (5032 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/forms.js (17492 bytes)…
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/sitewide.js (16554 bytes)…
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/stylesheet.css (3220 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/config.js (25507 bytes)…..
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/popup_capabilitycodes.shtml.gz (1020 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/filter.js.gz (1862 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/filter_vlan.js.gz (1408 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/filter_mac_ether.js.gz (1793 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/security.js.gz (962 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/vlan.js.gz (959 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/ssid.js.gz (4151 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/network-if.js.gz (2084 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/dot1x.js.gz (988 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/stp.js.gz (957 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/ap_assoc.shtml.gz (5614 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/ap_event-log.shtml.gz (3907 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/ap_home.shtml.gz (6972 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/ap_network-if.shtml.gz (3565 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/ap_network-map.shtml.gz (3880 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/ap_services.shtml.gz (3697 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/ap_system-sw.shtml.gz (2888 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/ap_contextmgr.shtml.gz (3706 bytes)
ap3g2-k9w7-mx.152-2.JB/html/level/1/images/ (directory) 0 (bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/ap_title_appname.gif (2092 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/2600_title_appname.gif (2100 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/apps_button.gif (1211 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/apps_button_1st.gif (1171 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/apps_button_cbottom.gif (318 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/apps_button_current.gif (1206 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/apps_button_endcap.gif (878 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/apps_button_encap_last.gif (333 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/apps_button_last.gif (386 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/apps_button_nth.gif (1177 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/apps_leftnav_dkgreen.gif (869 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/apps_leftnav_green.gif (879 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/apps_leftnav_upright.gif (64 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/apps_leftnav_yellow.gif (881 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/arrowdown_red.gif (108 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/arrowup_green.gif (108 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/corner_ur_7.gif (53 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/dkgreenmask11_up.gif (113 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/dkgreenmask28_upright.gif (110 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/grn_vertlines_bottom.gif (149 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/grn_vertlines_top.gif (141 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/hinav_plus.gif (56 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/left_bkg.gif (146 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/list_data.gif (122 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/logo.gif (29454 bytes)……
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/pixel.gif (49 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/sitewide_downleft.gif (53 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/sitewide_help_off.gif (934 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/sitewide_help_on.gif (934 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/sitewide_print_off.gif (111 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/sitewide_print_on.gif (111 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/spacer.gif (49 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/whitemask11_botleft.gif (62 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/whitemask11_upright.gif (61 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/event_alert.gif (73 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/event_critical.gif (73 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/event_debugging.gif (73 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/event_emergency.gif (73 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/event_error.gif (73 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/event_information.gif (73 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/event_notification.gif (73 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/event_warning.gif (73 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/check_mark.gif (71 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/Spectrum.gif (1556 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/background_web41.jpg (732 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/cisco-logo-2012.gif (579 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/1/images/logout_image.gif (40294 bytes)...…..
ap3g2-k9w7-mx.152-2.JB/html/level/15/ (directory) 0 (bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_assoc_adv.shtml.gz (4133 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_event-log_config-options.shtml.gz (5651 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_event-log_notif-options.shtml.gz (2683 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_express-setup.shtml.gz (11835 bytes)..
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_express-security.shtml.gz (13539 bytes)…
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/def_broadcast-ssid.shtml.gz (1263 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/def_eap-security.shtml.gz (1791 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/def_no-security.shtml.gz (1582 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/def_wep-security.shtml.gz (1597 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/def_wpa-security.shtml.gz (1854 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_network-if_ipaddress.shtml.gz (4594 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_network-if_802-11.shtml.gz (6308 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_network-if_802-11_b.shtml.gz (6265 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_network-if_802-11_c.shtml.gz (26662 bytes)…..
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/dBm_mW_translation_table.shtml.gz (1511 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_network-if_802-11_d.shtml.gz (4059 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_network-if_ethernet.shtml.gz (4340 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_network-if_ethernet_b.shtml.gz (5488 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_network-map_ap-adjacent-list.shtml.gz (3795 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec.shtml.gz (7307 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_ap-client-security.shtml.gz (26298 bytes)…..
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_ap-key-security.shtml.gz (12303 bytes)..
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_band_select.shtml.gz (5699 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_local-admin-access.shtml.gz (6978 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_network-security_a.shtml.gz (10182 bytes)..
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_network-security_b.shtml.gz (5594 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_lrs.shtml.gz (5077 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_lrs_b.shtml.gz (8514 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_lrs_c.shtml.gz (6163 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_dot1x-security.shtml.gz (6432 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_dot1x-certificates.shtml.gz (11155 bytes)..
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_dot1x-cert_fingerprint.shtml.gz (577 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_ap-client-security-adv_a.shtml.gz (4973 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_ap-client-security-adv_b.shtml.gz (5051 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_ap-client-security-adv_c.shtml.gz (4658 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_ap-client-security-adv_d.shtml.gz (3596 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_ids_mfp.shtml.gz (3912 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_sec_ids_mfp_stats.shtml.gz (3642 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_arp.shtml.gz (3005 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_cdp.shtml.gz (5112 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_console-telnet.shtml.gz (6811 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_dns.shtml.gz (3575 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_filters.shtml.gz (5207 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_filters-ip.shtml.gz (8411 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_filters-mac.shtml.gz (3998 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_filters-ether.shtml.gz (3842 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_hot-standby.shtml.gz (5495 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_http.shtml.gz (5977 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_mobile-ip-b.shtml.gz (6656 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_mobile-ip-c.shtml.gz (4153 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_mobile-ip-d.shtml.gz (5159 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_mobile-ip.shtml.gz (6007 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_qos-traffic.shtml.gz (8125 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_qos.shtml.gz (12165 bytes)..
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_qos_adv.shtml.gz (4433 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_snmp.shtml.gz (8002 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_sntp.shtml.gz (5948 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_vlan.shtml.gz (12780 bytes)..
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_voice-traffic.shtml.gz (6347 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_services_stp.shtml.gz (7107 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_stationview-client_ltest.shtml.gz (5514 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_system-sw_upgrade-b.htm (231 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_system-sw_upgrade-b.shtml.gz (6196 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_system-sw_upgrade.htm (229 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_system-sw_upgrade.shtml.gz (6238 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/banner.html (9573 bytes)..
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/frameAssociation.html (628 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/frameEventlog.html (627 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/frameHome.html (611 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/frameNetWork.html (619 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/frameSecurity.html (637 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/frameServices.html (651 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/frameSoftware.html (650 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/frameWireless.html (626 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/frameset.html (4394 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/navAssociation.html (897 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/navBar41.css (3605 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/navHome.html (1554 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/navNetwork.html (3935 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/navSecurity.html (2374 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/navServices.html (4508 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/navSoftware.html (1586 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/navWireless.html (1207 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/arrow_down.gif (177 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/arrow_down2.gif (838 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/arrow_right.gif (137 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/arrow_right2.gif (838 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/servicescript41.js.gz (12165 bytes)..
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/sideMenu.js.gz (813 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_easy-setup.shtml.gz (27004 bytes)…..
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/navEventLog.html (911 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/content41.css (10497 bytes)..
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/logout.html (2369 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_def_spec_information.shtml.gz (2190 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_system-sw_upgrade_poll.htm (234 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_system-sw_upgrade_poll.shtml (3596 bytes)
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_system-sw_sysconfig.shtml.gz (7145 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_stationview-client.shtml.gz (5554 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_contextmgr_ap.shtml.gz (4774 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_contextmgr_scm.shtml.gz (5294 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_contextmgr_scm-groups.shtml.gz (7511 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/html/level/15/ap_contextmgr_scm_summary.shtml.gz (5061 bytes).
extracting <strong>ap3g2-k9w7-mx.152-2.JB/ap3g2-k9w7-xx.152-2.JB</strong> (9500284 bytes)..................................................................................................................……
extracting ap3g2-k9w7-mx.152-2.JB/8004.img (1114148 bytes).................................................................................................................................…..
extracting ap3g2-k9w7-mx.152-2.JB/E2.bin (18656 bytes)….
extracting ap3g2-k9w7-mx.152-2.JB/E5.bin (92114 bytes)...............…..
extracting ap3g2-k9w7-mx.152-2.JB/X2.bin (15158 bytes)…
extracting ap3g2-k9w7-mx.152-2.JB/X5.bin (61798 bytes)......…….
extracting ap3g2-k9w7-mx.152-2.JB/V2.bin (12826 bytes)..
extracting ap3g2-k9w7-mx.152-2.JB/V5.bin (11660 bytes)..
extracting ap3g2-k9w7-mx.152-2.JB/B2.bin (9328 bytes)..
extracting ap3g2-k9w7-mx.152-2.JB/B5.bin (106106 bytes)..................…..
extracting ap3g2-k9w7-mx.152-2.JB/Y2.bin (5830 bytes).
extracting ap3g2-k9w7-mx.152-2.JB/Y5.bin (75790 bytes).........…….
extracting ap3g2-k9w7-mx.152-2.JB/info (283 bytes)
extracting info.ver (283 bytes)
  • Now you need to set the boot image. Look for the binary file that is unpacked. For this image, I highlighted the path and file in blue above. Just prefix it with "flash:/" and you’re all set. You can repeat the "set" command without any options to see the current configuration.
<strong>ap: set BOOT flash:/ap3g2-k9w7-mx.152-2.JB/ap3g2-k9w7-xx.152-2.JB</strong>
<strong>ap: set</strong>
BOOT=flash:/ap3g2-k9w7-mx.152-2.JB/ap3g2-k9w7-xx.152-2.JB
DEFAULT_ROUTER=10.0.0.2
ENABLE_BREAK=yes
IP_ADDR=10.0.0.1
MANUAL_BOOT=no
NETMASK=255.255.255.0
ROM_PERSISTENT_UTC=1348715355
TERMLINES=0
  • Time to boot up the AP!
<strong>ap: boot</strong>
Rebooting system to reset DPAA…

That’s it! Your LWAPP is now an Autonomous AP!

Delete / Clear Trailing Whitespace Using BBEdit

To remove unwanted trailing whitespace, you will need to use BBEdit’s grep feature in find and replace. Check the box for Grep and enter this search string:
[ \t]+$

Then leave the replace box empty and do a replace all. This is useful when you copy and paste lines from a minicom session on network equipment.

Add Filtered Proxy Email Address in Office365

After migrating over my existing mail to Office365, I wanted a way to tidy up some things. Mainly I was looking to clean up emails from any sites I give out my address to. I also wanted to limit what my email address had access to (i.e. I don’t want someone who finds my forums.macrumors.com email to be able to use it for a banking site).

My solution? Filtered email addresses.

For each site I sign up at, I create a custom email address (free since you only pay per mailbox) specific to the site I’m signing up for. I never reuse this address anywhere else. If the address starts to receive spam, I can delete the address and I know exactly which site caused the spam issue so I can avoid it in the future.

Now to organize the mail coming to these extra addresses, I created rules to move them to folders named for the site the mail came from. This keeps everything nice and tidy and all the junk mail away from my personal mail.

The one problem I came across while doing this is the sheer amount of clicking and page loading to complete the task. Thankfully Office365 allows me to script out all the work and avoid all the tedium of this every time I want to add a new address.

The following are a few short steps to complete the work:

  1. Connect to Office365’s Exchange platform using PowerShell. I’ll eventually do a write up on how I manage this from my MacBook, but for now I’ll just link the PowerShell steps from Microsoft.
    http://help.outlook.com/en-us/140/cc952755.aspx
  2. Get your current mailbox.
    $mb = Get-Mailbox <name>
  3. Add the secondary email to your mailbox.
    $mb.EmailAddresses.Add("smtp:macrumors-forum-email@domain.com")
    Set-Mailbox $mb.Identity -EmailAddresses $mb.EmailAddresses

    Note: Additional emails with the ‘smtp:’ prefix are secondary emails. They will be delivered into your mailbox but email sent out won’t appear to be from them. You need to remove the current ‘SMTP:’ prefixed email, add it in with a ‘smtp:’ and then add a new ‘SMTP:’ prefixed email to change the outgoing address.

  4. Create a folder for the mail to be routed into.
    $folder = New-MailboxFolder -Parent "$($mb.Identity):\Inbox\" -Name "macrumors-forum"
  5. Create a rule to route the mail into the new folder.
    New-InboxRule "Macrumors Forum Email Example" -HeaderContainsWords "macrumors-forum-email@domain.com" -MoveToFolder $folder.Identity

    Note: The rule must use “HeaderContainsWords” as Office365 will match ANY of your emails if you use the To: field filter with one of your email addresses.

That’s it! Of course I wouldn’t want to write all of that for each one I do, so I took it all and tossed it in a small ps1 script file for easy use later.

https://github.com/lvlegioxi/ps-sysadmin-scripts/blob/master/Office365/General%20Exchange/add-filtered-address.ps1
https://github.com/lvlegioxi/ps-sysadmin-scripts

Switching Email Platforms

When I setup my new personal email hosting I ended up choosing Office365 to host my account. The providers I’ve used previously are: SherWeb Exchange 2007/2010
Gmail
Outlook.com

The reasons for choosing Office365 are:
Sync (Contacts/Calendar are a must)
No ads
No mail scanning (i.e. Gmail ads scan through your mail)
Low cost
Lots of space (I use 6GB+ currently)
Flexibility

The one negative I saw was the contract term – minimum 1 year commitment and it never goes month to month, you renew the 1 year or more contract at the expiration. For $4/mo, I figured it wasn’t too much of a commitment.

Now I mentioned the flexibility of Office365 being one of my choices for moving to the platform. The entire platform can be managed through PowerShell and with the small Server 2012 Core VM I run on my Mac… it can be managed via SSH as well. How much can I manage? Down to the mail file level.

What does this get me? Quick scripts that can manage my mail for me. Hopefully I’ll be able to post some of them soon.

Accessing RS-232 / USB Connections to Network Equipment from OS X

You will need either a USB->Serial adapter or a USB->Mini USB cable (for newer Cisco equipment).

The USB->Serial adapter used for this write up is the TrippLite Keyspan USA-19HS. This adapter will need the driver installed which may be found at the TrippLite website. The Cisco USB->Mini USB cable does not require a driver (comes with OS X).

Once you have your adapter of choice and the driver installed, you will want to install Minicom. To get the latest version of Minicom you will need MacPorts installed. With MacPorts installed, launch a terminal window and enter the command:
sudo port install minicom

It will ask for your password and then it will download the source for Minicom, compile and install it. From here on out, you can launch Minicom from any terminal window just by using the command:
minicom

Now we need to find the correct port to open when we run minicom. From the terminal window run:
ls /dev/cu*

And you should see something similar to:

In this example, you will see both a Cisco USB->Mini USB port and a Keyspan port. The two ports are:
[TrippLite Keyspan Adapter]

/dev/cu.USA19H141P1.1

[Cisco USB->Mini USB Adapter]

/dev/cu.usbmodem1421

If you have multiple adapters plugged in, you will see them listed as a forms of those two listings.

When you launch minicom, it will have incorrect settings for the defaults. You can choose to launch it and enter new temporary settings each time or you can modify the settings and have them saved. If you wish for them to be saved, you will need to run minicom under sudo. For this tutorial, I enter my settings each time (they change depending on what hardware you’re connecting to anyways). To launch minicom direct into the settings window, run:
minicom -s

This will bring up the settings window. The first section you will want to go to is "Serial Port Setup":

Now press E to setup the serial port parameters. For the Cisco wireless AP I’m connecting to, the settings are 9600 8N1. Press enter after configuring the settings to go back to the previous screen.

Now press A and enter the path to the serial port. For me it is /dev/cu.USA19H141P1.1, then for my Cisco AP I need to turn off flow control by pressing F. Press enter when you’re done then select "Exit" to exit out of the settings. If you had chosen to run this under sudo, you can choose to save the setup at the default.

Now if you hit enter at the console screen you should receive the prompt from your equipment:

All set! If you need to quit properly or change more settings, press CTRL-A.