Sunday, February 20, 2011

Password Recovery Procedure for Cisco router 2600 and 2800 series

If you buy used Cisco device for your Cisco home lab, your used router/switch configuration most likely already erased to default configuration by the reseller. But what if you got a router/switch with password in it, or you forgot the password you gave to the device.


Cisco devices have a password recovery procedure that you can use to overcome this problem, some devices might have different procedure for password recovery.

The steps that I'm showing here is for Cisco 2600 and 2800 series routers, but most routers have the common steps to follow.
Some Cisco switches series have a button on the chassis that you must press for password recovery.
WARNING!!!
The password recovery procedure will wipe out all configuration in the router/switch, it is always a good idea to backup your configuration regularly and use the backup to reconfigure the router/switch after password recovery procedure.


To recover the password first you need to enter the ROMmon mode, for 2600 and 2800 series routers you need to change the configuration register from 0x2102 to 0x2142, then reset the router.
rommon 1 > confreg 0x2142
You must reset or power cycle for new config to take effect
rommon 2 > reset



Changing the configuration register from 0x2102 to 0x2142 tells the router to ignore the configuration in the NVRAM - where you place the password for the router.
This is why you must backup the configuration file to TFTP server regularly, so you can recover the configuration file if something like this happen in the future.
Your router will reload after the "reset" command in the ROMmon mode with no configuration, so it will ask again whether you want to enter the initial configuration prompt again, just answer no to this:
Would you like to enter the initial configuration dialog? [yes/no]: no


At this point you can enter the router without providing the password, if you check with show version command you will get that the configuration register has changed:

router# show version
Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-I-M), Version 12.1(2)T, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2000 by cisco Systems, Inc.
Compiled Tue 16-May-00 15:15 by ccai
Image text-base: 0x80008088, data-base: 0x80865F64

ROM: System Bootstrap, Version 11.3(2)XA4, RELEASE SOFTWARE (fc1)

Router uptime is 3 minutes
System returned to ROM by reload
System image file is "flash:c2600-i-mz.121-2.T.bin"
cisco 2611 (MPC860) processor (revision 0x202) with 20480K/4096K bytes of memory.
Processor board ID JAB0317052N (1135645455)
M860 processor: part number 0, mask 49
Bridging software.
X.25 software, Version 3.0.0.
2 Ethernet/IEEE 802.3 interface(s)
1 Serial network interface(s)
32K bytes of non-volatile configuration memory.
8192K bytes of processor board System flash (Read/Write)
  

Next thing is to fill in your new password or erase the password requirement from the router configuration mode. Use enable password or enable secret, saver to use enable secret.

router# configure terminal
router (config)# enable secret Cisco  


Don't forget to paste your backup configuration file to the terminal and save the running configuration:
router# write memory
or
router# copy running-config startup-config 
 


Last thing to do and the most important part is to change back the configuration register to 0x2102, or else everytime your router reloads it will ignore the configuration file.

router (config)# config-register 0x2142  


You can check with show version command that your configuration register value will change to 0x2102 after reloading the router.


router# show version
Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-I-M), Version 12.1(2)T, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2000 by cisco Systems, Inc.
Compiled Tue 16-May-00 15:15 by ccai
Image text-base: 0x80008088, data-base: 0x80865F64

ROM: System Bootstrap, Version 11.3(2)XA4, RELEASE SOFTWARE (fc1)

Router uptime is 3 minutes
System returned to ROM by reload
System image file is "flash:c2600-i-mz.121-2.T.bin"
cisco 2611 (MPC860) processor (revision 0x202) with 20480K/4096K bytes of memory.
Processor board ID JAB0317052N (1135645455)
M860 processor: part number 0, mask 49
Bridging software.
X.25 software, Version 3.0.0.
2 Ethernet/IEEE 802.3 interface(s)
1 Serial network interface(s)
32K bytes of non-volatile configuration memory.
8192K bytes of processor board System flash (Read/Write)

 

Reload the router using reload command:

router# reload  

Fastest Way to Recover And Upgrade Cisco ISO Using tftpdnld

There are many articles about how to recover or upgrade your Cisco IOS, but personally I find that using tftpdnld is the fastest and easiest way to do this.

tftpdnld is a command that you can use in the ROMmon mode of Cisco devices.

Using tftpdnld you can download files directly to the Cisco routers or switches from ROMmon mode using the console cable (serial connection).

In order to use the tftpdnld command you need a TFTP server running in your computer, any TFTP server will do.
In this example I recover my Cisco IOS image for my 2611 router, but this tutorial also good for 2800 and 3800 series routers.
I need to tell you that you can use tftpdnld to download image file from TFTP server to the router but not from the router to TFTP server.
Also this command requires you to use the first LAN port in the router - in 2611 is ethernet 0/0 port like shown below.


But in 2621 router you can also use the Token Ring or Fast Ethernet port.
WARNING!!!
Use this tutorial only if you understand the effect of the commands provided and you aware the effect of the procedures shown to a production or running network!
 
First thing you need to do to recover or upgrade Cisco IOS is prepare your IOS image file in the TFTP server folder.
Next is to get in to the ROMmon mode of the router.
In the ROMmon prompt, you need to set up some configuration for router to TFTP server connection. In this example I use the following configuration:


Issue the "set" command in the prompt, it shows the current configuration you've made, next is to type in the following commands:
 
rommon 1 > set
rommon 2 > IP_ADDRESS=171.68.171.0
rommon 3 > IP_SUBNET_MASK=255.255.254.0
rommon 4 > DEFAULT_GATEWAY=171.68.170.3
rommon 5 > TFTP_SERVER=171.69.1.129
rommon 6 > TFTP_FILE=c2600-is-mz.121-2.T.bin
 
Make sure you got everything right and your TFTP server is connected to the first LAN Port of the router.
Before issuing the tftpdnld, Cisco docummentation tells that in 2600 and 1720 series router, the tftpdnld in ROMmon mode might report a bad checksum comparison when it loads Cisco IOS software images of Cisco IOS Software Release 12.0(2.2)T or later - it's a bug thing.
To overcome this problem you need to issue another command:
rommon 7 > TFTP_CHECKSUM=0

Next you're ready to isssue tftpdnld command, type in the command as shown below then it will show you some output, answer y to the question prompted to you.
The question shows you that the content of the flash memory will be erased and replaced by the downloaded image file.
rommon 8 > tftpdnld
IP_ADDRESS: 10.1.1.1
IP_SUBNET_MASK: 255.255.255.0
DEFAULT_GATEWAY: 10.1.1.1
TFTP_SERVER: 10.1.1.2
TFTP_FILE: c2600-is-mz.121-2.T.bin
Invoke this command for disaster recovery only.
WARNING: all existing data in all partitions on flash will be lost!
Do you wish to continue? y/n: [n]: y
Receiving c2600-is-mz.121-2.T.bin from 10.1.1.2 !!!!!.!!!!!!!!!!!!!!!!!!!.!!
File reception completed.
Copying file c2600-is-mz.121-2.T.bin to flash.
Erasing flash at 0x607c0000
program flash location 0x6044000
rommon 9 > 
 
At this point your new image will be in the flash memory if there is no problem with the connection from TFTP server to the router.
You can verify that your image exist in the flash using the following command:
rommon 9 > dir flash:
File size Checksum File name
4603828 bytes (0x463fb4) 0x9719 c2600-i-mz.121-2.T.bin
rommon 10 >

Last thing to do is to set the boot command to tell the router that you want it to boot using the image file you just downloaded:
rommon 10 > boot flash:c2600-i-mz.121-2.T.bin
program load complete, entry point: 0x80008000, size: 0x51c0dc
Self decompressing the image : #################################################
##################################
 

That's it you just successfully recover your Cisco IOS image, check the new image using the show version from the router prompt:
Router2611>sh version
Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-I-M), Version 12.1(2)T, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2000 by cisco Systems, Inc.
Compiled Tue 16-May-00 15:15 by ccai
Image text-base: 0x80008088, data-base: 0x80865F64

ROM: System Bootstrap, Version 11.3(2)XA4, RELEASE SOFTWARE (fc1)

Router2611 uptime is 1 minute
System returned to ROM by reload
System image file is "flash:c2600-i-mz.121-2.T.bin"
cisco 2611 (MPC860) processor (revision 0x202) with 22528K/2048K bytes of memory.
Processor board ID JAB0317052N (1135645455)
M860 processor: part number 0, mask 49
Bridging software.
X.25 software, Version 3.0.0.
2 Ethernet/IEEE 802.3 interface(s)
1 Serial network interface(s)
32K bytes of non-volatile configuration memory.
8192K bytes of processor board System flash (Read/Write)
Configuration register is 0x2102 

...



TFTP Server For Newbies

TFTP or Trivial File Transfer Protocol can be a very useful network management tool. Although it's a simplified version of FTP, but because of that simplicity it wins the heart of all network engineers.


You can use TFTP server for numerous purposes when relating it with network devices.
You can use it for uploading or downloading Cisco IOS or other network vendors' operating systems, backup configuration files, or even run firmwares or operating system over the network for IP Phones, network devices, etc. without storing them in the devices.

I think most if not all of the professionally managed networks are definitely using TFTP servers.

I quoted from wikipedia about the details and features of TFTP Servers:


  • It uses UDP port 69 as its transport protocol (unlike FTP which uses TCP port 21).
  • It cannot list directory contents.
  • It has no authentication or encryption mechanisms.
  • It is used to read files from, or write files to, a remote server.
  • It supports three different transfer modes, "netascii", "octet" and "mail", with the first two corresponding to the "ASCII" and "image" (binary) modes of the FTP protocol; the third is obsoleted by RFC1350.
  • The original protocol has a file size limit of 32 MB, although this was extended when RFC 2347 introduced option negotiation, which was used in RFC 2348 to introduce block-size negotiation in 1998 (allowing a maximum of 4 GB and potentially higher throughput). If the server and client support block number wraparound, file size is essentially unlimited.
  • Since TFTP utilizes UDP, it has to supply its own transport and session support. Each file transferred via TFTP constitutes an independent exchange. That transfer is performed in lock-step, with only one packet (either a block of data, or an 'acknowledgement') ever in flight on the network at any time. Due to this lack of windowing, TFTP provides low throughput over high latency links.
  • Due to the lack of security, it is dangerous over the open Internet. Thus, TFTP is generally only used on private, local networks.
  • You can find many free TFTP servers in the internet, most popular ones are:

    WinAgents TFTP Server
    TFTPD32
    SolarWinds TFTP Server
    Kiwi CatTools - Network tools collection including TFTP Server

    Personally I use the SolarWinds TFTP Server, don't get me wrong, every TFTP server you can find is easy to install and configure. I just use the one from SolarWinds because I have been using it from a very long time ago.

    Up there in the post is the image of SolarWinds TFTP server when I used it to upload IOS image for recovery.

    To use a TFTP server is fairly easy, just make sure your router can reach the computer you use for TFTP server, run the TFTP service in your computer, provide a space for placing your files to upload or download, and run the copy command from the router.

Router Stuck In Rommon Mode

One time in a project, I worked on Cisco Catalyst 6500 series, it's one of the biggest switches you can find in the market, not to mention very expensive too.
The thing is it was using CatOS instead of IOS, the client only want to use IOS. CatOS is another flavor of Cisco Operating System which uses a set based commands. Meaning when you want to configure something the command usually use "set" as the first command.

So I upgraded the image to IOS, I had to change several switches since they were using quite a lot of those switches.

Then the problem came, one of the switches stuck in the ROMMON mode. It's not showing the normal switch > prompt but only the rommon 1 > prompt.

This is not a serious problem, I only forgot to change back the configuration register value.

You might have experienced this before, or in case you find this problem in the future, lucky you got in this post.

When a router/switch stuck in ROMMON mode, the first thing you need to check is the configuration register value.

The normal operation configuration register value is 0x2102, you can verify the value using the confreg command in the ROMMON prompt, or using show version in the normal prompt.

Here is the output you get if you have no problem with the configuration register:

rommon 1 > confreg
Configuration Summary
enabled are:
load rom after netboot fails
console baud: 9600
boot: image specified by the boot system commands
or default to: cisco2-C2600
do you wish to change the configuration? y/n [n]:

 
And this is the output if you have the wrong configuration register:
rommon 2 > confreg
Configuration Summary
enabled are:
load rom after netboot fails
console baud: 9600
boot: the ROM Monitor
do you wish to change the configuration? y/n [n]:

 
With the confreg command, you'll also prompted if you want to change the configuration register value. Type y if you want to change it or type n or press enter if you want to leave it.
If you type y, you'd be taken to a series of questions, just answer no to all but the change the boot characteristics, set the value on the next prompt to 2.
rommon 2 > confreg
Configuration Summary
enabled are:
load rom after netboot fails
console baud: 9600
boot: the ROM Monitor

do you wish to change the configuration? y/n [n]: y
enable "diagnostic mode"? y/n [n]:
enable "use net in IP bcast address"? y/n [n]:
disable "load rom after netboot fails"? y/n [n]:
enable "use all zero broadcast"? y/n [n]:
enable "break/abort has effect"? y/n [n]:
enable "ignore system config info"? y/n [n]:
change console baud rate? y/n [n]:
change the boot characteristics? y/n [n]: y
enter to boot:
0 = ROM Monitor
1 = the boot helper image
2-15 = boot system
[0]: 2
Configuration Summary
enabled are:
load rom after netboot fails
console baud: 9600
boot: image specified by the boot system commands
or default to: cisco2-C2600
do you wish to change the configuration? y/n [n]: n
You must reset or power cycle for new config to take effect

Reset the device using the following command:
rommon 3 > reset


With the above steps, your Cisco device should be running normal again but if it's not, that means the device might unable to find the valid IOS image. This can happen because of mistype or even corrupted image file.
Verify first that you have a valid IOS image using:
rommon 3 > dir flash:
File size Checksum File name
3114612 bytes (0x2f8674) 0x7612 c2600-i-mz.113-9.T

There you can see I have an IOS image c2600-i-mz.113-9.T, then set the device to boot from the image using boot flash: command followed by the name of the IOS image.
rommon 2 > boot flash:c2600-i-mz.122-10b.bin
program load complete, entry point: 0x80008000, size: 0x51c0dc
Self decompressing the image : #################################################
##################################

ROMMON In Cisco


If you have worked with Cisco devices for some time, you must have heard about ROMMON or ROM Monitor.

ROMMON or also known as bootstrap program is you can say a mini operating system in the Cisco devices that helps to initialize the processor hardware and boot the operating system software (Cisco IOS).

Since it's only a mini OS that has a very limited set of commands you can't do any configuration such as configuring routing, ip addressing, etc from ROMMON.

But the power of the ROMMON is that you can do very useful things such as password recovery procedure when you forgot your password to the devices, downloading softwares through serial connection, and upgrading your Cisco IOS.

Now why did I put an image of console cable up there? It's because you can only access the ROMMON using the console connection i.e. through terminal monitor.

You can access the ROMMON mode by changing the configuration register of the device using the break button on your keyboard.
Or if you're using laptops, you usually have limited set of keys in the keyboard right? So you have to use the Ctrl + Function Button + Break Button.

As quoted from the Cisco docummentation:
Break (system interrupt) is always enabled for 60 seconds after the router reboots, regardless of whether it is configured on or off in the configuration register. During this 60-second window, you can break to the ROM monitor prompt by pressing the Break key. 
After issuing the break command, you'll be taken to the following screen (might different on all devices):
System Bootstrap, Version 11.3(2)XA4, RELEASE SOFTWARE (fc1)
Copyright (c) 1999 by cisco Systems, Inc.
TAC:Home:SW:IOS:Specials for info
C2600 platform with 24576 Kbytes of main memory

program load complete, entry point: 0x80008000, size: 0x2f8558
Self decompressing the image : ##############################PC = 0xfff0a530, Vector = 0x500, SP = 0x817ff8b0

monitor: command "boot" aborted due to user interrupt
rommon 1 >
 


As I said before, you can't do anything much from the ROMMON mode, let's see what commands are available using the ? command:
rommon 1 > ?

alias set and display aliases command
boot boot up an external process
break set/show/clear the breakpoint
confreg configuration register utility
cont continue executing a downloaded image
context display the context of a loaded image
cookie display contents of cookie PROM in hex
dev list the device table
dir list files in file system
dis display instruction stream
dnld serial download a program module
frame print out a selected stack frame
help monitor builtin command help
history monitor command history
meminfo main memory information
repeat repeat a monitor command
reset system reset
set display the monitor variables
stack produce a stack trace
sync write monitor environment to NVRAM
sysret print out info from last system return
tftpdnld tftp image download
unalias unset an alias
unset unset a monitor variable
xmodem x/ymodem image download
 

If you want to go back to the router/switch mode just use the following command: 
rommon 1 > reset 

Cisco Device Bootup Step


To understand how to configure routers is very important, but it's also important to understand what steps are involved when a Cisco router/switch is booting up.

This knowledge can help you get to know your Cisco devices better, plus there are questions related to the boot up steps in the CCNA exam.

First, we know that Cisco router is using IOS or Internetworking Operating System, which is a software that controls all the routing and switching functions in a Cisco network device.

There are some steps need to be done before loading the Cisco IOS and get your router/switch up and running.

1. Do POST

When first turned on, the cisco device performs POST or Power-On Self Test that executes diagnostics from the ROM on all hardware modules in the device.
It will verify all the basic operations of CPU, memory, and interface ports.

2. Loading the Bootstrap

Before loading the IOS to the RAM, Cisco device loads the bootstrap first. Bootstrap is a simple set of instructions that tests hardware and then initializes the IOS for operation.
Bootstrap is located at the device's ROM.

At this point, your console terminal will show you the following text, but the text will vary depends on the device you're using, interfaces available, and version of the IOS.
System Bootstrap, Version 11.3(2)XA4, RELEASE SOFTWARE (fc1)
Copyright (c) 1999 by cisco Systems, Inc.
TAC:Home:SW:IOS:Specials for info
C2600 platform with 24576 Kbytes of main memory

There you can see I'm using Cisco 2600 series router with IOS version 11.3(2), and you can see also the available RAM/DRAM.

After this information show up, you might also see the statement:
NVRAM invalid, possibly due to write erase

The above statement might show up if you're bought used Cisco device, don't worry it's not a malfunction or anything.
It only tells us that this router has not been configured yet or that the NVRAM has been erased, just do some configuration and save it, then the statement will go away.

3. Loading the IOS

After finished with the bootstrap, the device will try to search for the valid IOS.
You can place the IOS on a number of places and the device will search the IOS based on the configuration register. The default value of the configuration register is 0x2102 which tells the device to load the IOS from the flash memory.

The normal place for an IOS is the flash memory of the device, but you can also place the IOS on other network devices and load them through TFTP.
The console terminal then shows the decompression process of the image:
program load complete, entry point: 0x80008000, size: 0x2f8558
Self decompressing the image : ###############################################
###############################################
###############################################
###############################################
###############################################
################################## [OK]
Depending on the size of the IOS image, you'd get a longer # mark. I've work with the high end Cisco devices such as Catalyst 6500 series and it takes a quite long time to decompress the image, some of the image size could take more than 100Mb.

If after five attempts a valid IOS image is not found, the router will take you to the ROM mode (ROMMON).
More on ROMMON on the next post.

After the device found the IOS, it will load it to the RAM where it stays there as long as the router is on and lists all the available hardware and software in the router and show them to the console terminal screen.
Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-I-M), Version 11.3(9)T, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-1999 by cisco Systems, Inc.
Compiled Wed 07-Apr-99 15:43 by pwade
Image text-base: 0x80008084, data-base: 0x80564C88

cisco 2611 (MPC860) processor (revision 0x202) with 18432K/6144K bytes of memory.
Processor board ID JAB0317052N (1135645455)
M860 processor: part number 0, mask 49
Bridging software.
X.25 software, Version 3.0.0.
2 Ethernet/IEEE 802.3 interface(s)
1 Serial network interface(s)
32K bytes of non-volatile configuration memory.
8192K bytes of processor board System flash (Read/Write)
 
4. Load the Configuration File

Next step is to load the configuration file. The device will start looking the configuration file in the NVRAM, loads them to the RAM and executes them one line at a time.
The configuration file tells the router of the configuration you've done to it such as routing, ip addresses of the interface ports, etc.

If the device can't find the configuration file in the NVRAM, such case can be found when you freshly configure the device, it will try to search the available TFTP server in your network.
If no TFTP server found, it will then display the setup dialog on the console terminal screen.
Would you like to enter the initial configuration dialog? [yes] :
The option enclosed in the brackets [ ], shows the default option, you can just press enter to answer yes or type no to enter the configuration manually.

That's it, four bootup processes that you can easily remember. In CCNA exam, you'd probably be asked on these steps, what will the device do when can't find something here, and what it'll try next, etc.

There are some terminologies you should be familiar with, those are:

ROM - a read only memory that holds the bootstrap of the device and a limited version of Cisco IOS to run a very limited functions usually used for recovery and update.

RAM/DRAM - a volatile memory which will be deleted whenever the device is rebooted or shutdown,
RAM is used to hold the running IOS and the running configuration of the device.

NVRAM - a non-volatile memory which will not be deleted even if the device is rebooted or shutdown,
NVRAM is used to hold the saved configuration (startup configuration) which will be loaded when system bootup to the RAM.

Flash - Also a non-volatile memory used to store the IOS. On higher end Cisco devices, the flash memory is external, pretty much like memory you used for your digital camera (SIMM or PCMCIA).
Very convinient since you can upgrade it as you need.

TFTP Server - Trivial File Transfer Protocol, a simplified version of FTP that you can use to transfer file over the network.

Monday, February 14, 2011

Engaging Constituents Using Mobile Technology


The era of phone booths and answering services is gone. Mobile phones are so ubiquitous that a year ago, 88 percent of households had them—and that number's only on the rise.
Regardless of your organization's demographics, chances are that a majority of your constituents use mobile phones. Many people who don't have reliable access to a computer still have their own mobile phone; on the other end of the spectrum, those who like to stay on technology's cutting edge have access to increasingly sophisticated smartphones. This widespread use means nonprofits are finding it more valuable to communicate with constituents using text messages, web pages, and mobile applications.
Even basic cell phones can be used for text messaging, and every day nearly 2.5 billion text messages are sent. There are no hard-and-fast rules governing this emerging means of outreach, which can be used both for one- and two-way conversations with constituents, or as a platform for giving.
Mobile websites convey more information in a graphically pleasing format. Mobile users can likely see your existing website, but some modifications can make it easier to use on phones. Mobile applications are designed to run specifically on smartphones, and typically combine a useful service with organization-specific information.
Which method is right for your organization? Let's look at each in more detail to help you decide.

Text Messaging

Text messages allow you to spread information, ask for help, and even have two-way conversations via subscribers' cell phones.
At its most basic, broadcast text messaging is very similar to broadcast email — you can send a message to every cell number subscribed to your list. How do people subscribe? They can sign up on your website by entering their cell number, or they can text you to join. You might, for example, post signs at an event asking people who want to subscribe to send a specific keyword (e.g., "hunger") to a particular short code (e.g., 56456).
You can also use text messaging for two-way conversations by using software that allows for branching logic following if/then scenarios. For example, you could ask people at a rally to send a text if they'd like to help. Everyone who responds gets a text message back asking, "Can you volunteer Saturday from noon to 3, Yes or No?". Users who reply "Yes" are sent directions and a confirmation; users who text "No" are asked about other opportunities. Two-way texting provides more complex and detailed communications than single-direction texts, but it also costs significantly more.
By integrating texts with a database, you can also create automated text communications. The Blue Ocean Institute produces a seafood information service — users text a type of fish to a short code (e.g., "King salmon" to 56456) and get a text in return with information about that species. This technology can work both ways — after the Haiti earthquake, for example, people sent text messages from the field for collection in a database.
If you're interested in a broadcast text campaign, there are a few ways to go about it. The easiest is to send an email to a subscriber's cell phone text email address using a typical email client or broadcast email tool. For example, if you send a regular email to 5558675309@vtext.com, it will show up as a text message on the phone of Verizon Wireless's subscriber at the number 555-867-5309 (vtext.com is Verizon's text-based email domain). This free method works best for small groups, but if your list grows beyond a couple dozen recipients, you may find the provider blocking your texts.
A better way is to use a hosted application geared to support mobile text campaigns. Similar to broadcast email packages, these tools let you manage subscribers, send messages, and have more complex two-way conversations. Vendors in this space include Mozes (very inexpensive text and voice campaigns only, starting at $10 per month), BulkSMS (broadcast texting at about $.05 per text), and Mobile Cause (texting starting at $69 per month, but it also supports mobile giving and pledging, as described below). More full-featured options include Mobile Commons and Mobile Accord, which cost several hundred dollars per month or more but support more complex text and giving campaigns.
If you want a complicated campaign that integrates a text-messaging platform into your database, your best bet may be to work with a programmer and a vendor that provides an application programming interface (API). An API allows a programmer to set up functionality to pull text messages into or out of your database. Most of the full-featured options include an API, but some, like Clickatell, offer only an API, making them more affordable. Expect to pay around $.04 per message with Clickatell, which is popular in the nonprofit and open-source space, or more with commercially focused tools like MBlox, SMS Everywhere, and Cell Trust.

Get the Code

If you want people to be able to send texts to your organization (e.g., to subscribe, engage in a two-way conversation, or donate), you might want to use a "short code" — a five- or six-digit number that takes the place of an actual phone number. It's possible to purchase your own short code from mobile providers, but it's expensive—about $500 a month for a generic code or $1,000 for a vanity code, like "UNICEF" spelled out on a telephone keypad. It's cheaper to just use a code that's provided by the mobile texting or mobile giving vendor that you use. The added bonus is that most vendors have put some thought into creating codes that are both easy to use and easy to remember.

Mobile Giving

Mobile giving — donating money by cell phone — was relatively unknown until the American Red Cross brought it front and center in the days following the Haiti earthquake. Suddenly, mainstream media outlets were featuring articles about the technology, and now everyone wants to try it.
The Red Cross showed that mobile giving can work on a global scale, but for most organizations it's better suited to live events and more contained environments. For instance, the United Way held a fundraiser at a Louisiana State University football game, using signs around the stadium to encourage spectators to donate $5 by texting the keyword LSU to a number. This $5 charge was added directly to donors' phone bills. The United Way raised more than $9,000 during the game.
In the United States, donations charged directly to the phone bill are currently limited to either $5 or $10 each. Expect to be charged a 5-7 percent service fee on each donation, and you won't actually receive the money until donors pay their phone bills. You also won't get any information about donors beyond their phone numbers, limiting your ability to engage them further.
A substantial limitation for small organizations: as per an agreement with the phone carriers, only organizations with annual revenues of more than $500,000 are eligible to set up mobile giving. The rules about this are under review, with the hope that more nonprofits might soon be eligible.
On the surface, mobile giving campaigns are simple — users text a keyword to a short code, and their carriers add the donation to their cell phone bills — but the details are a little more complicated.
Only two organizations facilitate mobile giving campaigns. The most commonly used is the Mobile Giving Foundation. Mobile Accord's mGive Foundation is a newer organization with similar services. These organizations make it possible for you take online donations, but they won't actually provide the functionality to communicate with donors; you'll need to work with one of the vendors described in the Mobile Texting section in order to do that. Mobile Cause, Mobile Commons, Distributive Networks, and Mobile Accord, as described above, will all help you facilitate mobile giving.
If your organization isn't large enough to qualify for a true mobile giving campaign, or if you want a simpler option, consider mobile pledging — it works much the same way, except users simply pledge to donate a certain amount with a text message. Your staff or a hired service can then follow up on those pledges via phone, or you can ask those who pledged to pay online with a credit card.

Websites and Apps for Mobile Phones

Almost all phones these days support text messages, but an increasing number of phones support web browsing and mobile applications as well.
Providing the ability for smartphone users to browse your website is relatively straightforward. Smartphones will show almost any website, but some look better than others. Because phones' screens are typically portrait-oriented — vertically tall — while computer monitors are typically landscape-oriented, typical websites tend to require left-to-right scrolling. The top left corner of your web page is a crucial place to place navigation elements to allow mobile phone users to easily browse.
Some tweaks to your existing website might provide enough support for your mobile users, but you could also consider creating a second, simplified site streamlined for mobile phones. Free of animation or design elements that might not work on phones, this site would be a pared-down version of your regular site that scrolls vertically. For an example, compare http://m.ebay.com to http://www.ebay.com.
Rather than requiring people to remember a separate mobile web address, you can include instructions in the coding language that try to automatically recognize when users are viewing the site on a mobile phone. This is less than 100 percent reliable, however, so it's a good idea to also include a link on your site directing users to your mobile site.
Instead of logging into your website, smartphone users can also download an application right onto their phone. These days you can find an app for nearly everything, and users are installing them left and right, and, in some cases, paying for the privilege.
Mobile apps pose an interesting, if still experimental, possibility for nonprofits. For example, the Monterey Bay Aquarium's Seafood Watch program has a mobile app that re-creates their popular pocket guide to help consumers make smart choices when purchasing or ordering seafood, and provides it for phones in an interactive format. As another example, the Salvation Army provides an app with selections of Christmas music, for which they charge a small fee.
The growing number of competing phones creates a challenge for app designers, because apps are platform-dependent — those designed for iPhones won't run on BlackBerries, and vice versa. And that poses a challenge for organizations, too. You need to either make educated assumptions about your users and desired audience, or build multiple apps for competing platforms. And while there are a few tools — like AppMakr, Sweb Apps, and MobBase — that allow non-technical users to create very simple mobile apps (for instance, one that simply provides text or images), for the most part, creating a mobile app will require a programmer.
Free apps still dominate the marketplace, but users are willing to pay a few dollars apiece for apps that manage to be both useful and cool. And that's the challenge — for an app to be popular, it has to be useful. This sounds like common sense, but there's no shortage of businesses creating apps that disseminate brand but don't add any value to users.

Wrapping it Up

As mobile phones rise in ubiquity, even to the point of replacing landlines, it becomes more crucial for organizations to evolve with the technology and leverage their popularity to engage new and existing constituents. Text messaging, mobile giving campaigns, and mobile apps and websites each offer a different approach with different strengths and weaknesses.
Whether your organization chooses one approach or several, you've got a host of options to deliver content and involve constituents in ongoing conversations. You might ease into it with a simple text campaign while modifying your website to be more welcoming to mobile users, or you might set the world ablaze by developing a "killer app" that gets downloaded by the millions. Whichever path you choose, you're moving in the right direction; mobile technology is not going away anytime soon.