This took way longer to figure out than it should have so I thought I would write a mini-howto just incase someone else runs into the same problems such as NULL pointer exception or Oops #17 errors.
Basically the key to it all is to start with a fresh install of Arch Linux Arm as per the install instructions and DO NOT apply any system updates afterwards using `pacman -Suy`. The key to getting ppp_generic (and maybe other kernel modules) compiling correctly is to leave the system as-is and (atleast for me) the kernel tree un-patched.
1. Run `pacman -S pacman`
2. `pacman -S make gcc`
3. Download kernel sources and either the Pro.config or P21.config
4. DONT patch the kernel tree with the ARM Cache patch
5. Copy either the PRO.config or P21.config to the source tree and rename to .config (i used the P21.config but originally had it working with the PRO.config)
6. `make menuconfig` enabling the following ppp modules and any other device drivers such as USB_SERIAL and USB_OPTION (note tun/tap seem to be compiled into the kernel):
$this->bbcode_second_pass_code('', '
Device Drivers --->
Network device support --->
<M> PPP (point-to-point protocol) support│
[ ] PPP multilink support (EXPERIMENTAL)
[ ] PPP filtering
<M> PPP support for async serial ports
<M> PPP support for sync tty ports
<M> PPP Deflate compression
<M> PPP BSD-Compress compression
<M> PPP MPPE compression (encryption) (EXPERIMENTAL)
< > PPP over Ethernet (EXPERIMENTAL)
<M> PPP over L2TP (EXPERIMENTAL)
')
7. Exit Saving the config
8. `make modules` and make a cup of tea while its compiling
9. copy the newly built ppp*.ko and slhc.* files to /lib/modules/2.6.31.6_SMP_820
10. `depmod -a` and reboot to check
11. Add ppp_generic to the MODULES section in rc.conf
12. `pacman -S ppp`
PPP should now be ok and work correctly to be used to make a dial up connection. I never could get NAT/iptables working so my work around was to use openvpn, use NAT on the remote openvpn server and simply allowing ip forwarding in /etc/sysctl.conf.
I am now happily writing this post using my pogoplug as a VPN gateway over a 3g connection and hope other can now to.
EDIT:
I have tar'd and uploaded the compiled ppp modules to: http://ppl.ug/LPdpTmiNRmQ/
EDIT:
Its useful to be able to tell if PPP is connected or not, i decided to use the light on the front of the pogoplug to show PPP's connect status for me the light is switched off on boot anyway so: On = PPP Connected, Off = PPP Disconnected
In /etc/ppp/ip-up.d/01-proled.sh (chmod to 755)
$this->bbcode_second_pass_code('', '#!/bin/sh
/sbin/proled green')
In /etc/ppp/ip-down.d/01-proled.sh (chmod to 755)
$this->bbcode_second_pass_code('', '#!/bin/sh
/sbin/proled off')