Monday 29 August 2016

Virgin on the ridiculous

Five months ago I moved, with all the stress and buggering about I didn't check the broadband situation.

I was merrily enjoying the basic BT Infinity package and I went onto my portal and put in the details of the new place.

Minimal ADSL 2+, bad ADSL 2+...

Oh Shit...WTF BT!

Checked Virgin (NTL) they had the corner in media, connectivity and the rest of it in the area. Anything you like sir, we got it all, Promises, promises.

I'd been there before with NTL and service sucked balls, badly. More recently an old neigbour's 5 month pain of a Virgin Media clusterfuck rang in my head and made me approach with caution but I had no choice.

Fast forward and the service was installed and with a decent download speed and 6Mbs up (a little pants), but it ran merrily.

Until late August, three months after install. Came back after a few days away, had been hot and I discovered no internet. Stupid looking white router thing is flashing green not white, Had a look on the router's web GUI and I'm seeing a download link issue. Not locked.

Called Virgin, repeated the same troubleshooting stuff I'd already done, declared there was nothing they could do and an engineer will be dispatched.

What's the issue? Sorry sir cannot say, could be anything... Like what? Router, cabling, exchange, act of God, narrow this down dude... He basically had no idea. Service desk scripts, 3rd party in India, basic triage and fuck off.

Engineer came. I wasn't about. The bloke faffed with the cables, went outside, swapped the router and it was all back. Great, was a one off.

Less then 30 days later, came back from Scotland with the kids and no internet, same thing, upstream is dead. Not locked.

Called Virgin. 1hr and 10 miutes of getting the runaround. None of the department hopping one used to get with NTL but no better.

So whats the issue? Sorry sir cannot say, could be anything... Booked an engineer for the 5th of Sepetember, 2016. Say what? Thats 9 days away buddy. Sorry Sir all we can do, fuck off.

But this time I'm told that there is a postcode wide outage and the service may be restored in 24hrs. Really? So what are you doing about this?

Nothing.

Come again. Nothing?

If no-one calls up then nothing gets done even if they know there is an issue. I told the guy that in my operations life if I did that I'd lose my job.

Virgin man in Indian Sub-continent: DILIGAF

I escalated to this guy's manger and went though it all over again, told him that if there was a postcode wise outage then my neighbours should the be down. He didn't seem to give a shit. No budging on the 5th visit at my expense. Sorry sir we have no information but some information, there may be a problem but there's not a problem, we're booking an engineer but it might be back in 24hrs.

Huh?

I would subscribe to the flat earth society's monthly newsletter before believing this shite.

Prior to Virgin and after NTL I had:
  • Tiscali: Up to 8MB
  • BE: ADSL2+
  • ZEN: Infinity 2
  • BT: Infinity 1
This covered about 10 years and I has one problem when I changed packages with BE from dynamic to static IP addressing and they had allocated the same IP to someone else. Proper ballache but they sorted it out... Eventualllyyyy. Admin error.

Aside from that, no issues. That's pretty good when you think about it?

Now dear Virgin, and with your black magic, phat white coax and extended engineer visits and shit that doesn't work very well,,, Why do you expect your user base will put up with this substandard nonsense? 

Because we're British and we put up with substandard shit. We'll to be clear we did, we now expect a little more and for you incompetent twats, this spells bad news.

The man on the phone seemd to be pretty fucked off with middle class toffs phoning up and giving him shit over stuff he couldn't fix despite knowing full well that the parent company was oversibscribing users and the whole cable modem thing didn't work so well. People don't want to be fucked about, life is too short, we have shit to do, important shit like CT600 tax returns and keeping kids amused with Scooby Doo.

Virgin, you're going to have to sort this fucked up situation out... Why? Because BT will bring Infinity into your areas but worse still, your user base can access 4G (or really LTE which is pretty shagging fast).

See when I got off the phone with with your clueless support bloke and his manager, neither of whome was ultimately any use and who had bald faced lied to me (yes I checked, two neighbours had Virgin and were working so no outage) I sat down, and then ran a speed test on my phone.

112MBs down and 40 up. No fucking way.... That got my small brain thinking. Why wired? I don't mean Ethernet (although I do) I mean, Infinity, ADSL, Cable. 

My issue is that I need wired internally, desktop, firewall, Cisco switch, control of everything. I just do.

This was a Saturday, kids were lured into the car with a promise of a Subway or a KFC and we hit PC World, Argos and Maplin. Only Maplin had a 4G wired router as the other two are worthless for anything beyond robbing you.

The router Maplin was peddling got mixed reviews online and I wasn't perepared to commit... Yes I'm a bloke and this is normal behavior when presented with minimal confidence in a result.

With the kids in the car and the phone running out of juice I 'Zoned (Prime) a TP-Link TR-MR3420 for £30 and a ZTE MF823 LTE dongle thing for £50 (just checked, though it was £40, fuck). And obviously a next day delivery, yes fuck you high street and hopefully we'll have drones dropping usefult shit instead of JDAMS in the near future.

Dragging the kids to the nearby shopping centre I ploughed into the 3 shop and demanded the finest 1 month rolling 4G contract they had. £26/month for 20GB and 1 New Pence per MB thereafter (£10/GB).

Back in the Batcave I placed the new SIM in an old HTC M7 and enabled the wifi sharing to placate the kids who were baying for my blood. With 'sillybilly' locked into their devices the children retreated to various hidden locations and went suspiciouly quiet with the little people watching cued-up My Little Pony.

With some breathing space, I sorted out some telnet access to a Cisco 2900G switch and allocated another VLAN/Added this to a trunked port and allocated an access port for the new router.

I use a Sophos UTM 9 firewall and I trunk all the VLANs into it down one wire. I created a new tagged interface as another WAN port, NATed it and set some rules.

At around lunchtime on the Sunday the Amazon man arrived bearing a box with two items.

Fired the router up, changed it's IP, connected it to the Cisco switch and transferrd the the SIM from the HTC to the ZTE modem.

Boom, the modem started flashing and the Sophos UTM prioritised the traffic over the LTE router.

Internet was back. It made me think.

Why the fuck am I paying £35 to Virgin? I get the same speed. Latency seems pretty good. I'm watching Netflix, writing this and doing everything else I would be doing on wired link.

Even running over a 3 year old HTC phone with a fucked battery I had internet where Virgin is going to take 9 days to 'resolve' their/my issue.

Luddites, dark ages, mobility is king. 

Should I carry on being hardwired? Why should I? Are the risks of disconnection any greater than this abysmal service?

Sure maybe I'll exceed £35 at 1p/MB after my default 20GB some months but you know what? 

That's my fucking choice, I'll pay a little more for something I could unplug and take on holiday or move with to a new property or not not come back from holiday and find that some clueless fucktards have cut me off from a service I fucking pay for and that I have no recourse over other than going to OFCOM.

Thinking bigger, just walk away and don't look back, make these muppets fix their issues. If users bang out and they cant get more, big decisions get made. If service is substandard with anything, vote with your feet.

Wider even still, what about LTE wireless MESH networking? Users buy nodes that participate in a resilient LTE fabric that access the internet via ADSL, Infinity, Cable and 4G-LTE making your experience completely provider agnostic and more importantly you never lose your connectivity.

We could manage our own internet access and cast the shit ones to the side, so fuck you Virgin, useless twats.






Saturday 26 March 2016

Flash Cisco IP phones with SIP firmware for non Cisco PBX

In order to make Cisco IP phones work with a non-Cisco PBX (Asterisk, 3CX for example) you need to flash them with Cisco SIP firmware.

Information regarding this process is a little thin so I thought I would share my experience of doing this successfully on a Cisco 6921 phone.

To be able to do this you'll need several things:

  1. The MAC address of the phone you're going to flash
  2. Cisco SIP Firmware files
  3. DHCP server
  4. TFTP server
  5. A custom SEP<MACof Phone>.cnf.xml file
  6. A dialplan.xml file
In this example I am using the 9.4.1.3 firmware for a 69xx (6921) phone that I'll boot to a file server that's running a Solarwinds TFTP server.

Once you have everything ready you can flash these phones very quickly and get them talking to a non-Cisco PBX, in my case Elastix.

OK, lets get started,

The process we'll use is as follows:
  1. Install a TFTP server and specify a TFTP root folder.
  2. Extract the Cisco SIP firmware into the root.
  3. Create the SEP<MACof Phone>.cnf.xml file in the TFTP root.
  4. Create the dialplan.xml file in the TFTP root.
  5. Configure DHCP to direct TFTP to the file server.
  6. Ensure that you have no firewall in the way or create an any>any rule from source to destination.
Installing the Solarwinds TFTP server is pretty straightforward, specify the root folder and start the server.

Extract the files from the Cisco SIP firmware zip file into the TFTP root:











Get the MAC of your phone and create the SEP<MACof Phone>.cnf.xml file in the TFTP root.

Paste the following into the file observing the bold/italic/large elements of where you should edit the file for your environment (Cisco Timezone strings can be found online):

<device>
  <deviceProtocol>SIP</deviceProtocol>
  <sshUserId>admin</sshUserId>
  <sshPassword>Password</sshPassword>
  <devicePool>
    <dateTimeSetting>
      <dateTemplate>D.M.Y</dateTemplate>
      <timeZone>Greenwich Standard Time</timeZone>
      <ntps>
        <ntp>
          <name>time.windows.com</name>
          <ntpMode>Unicast</ntpMode>
        </ntp>
      </ntps>
    </dateTimeSetting>
    <callManagerGroup>
      <members>
        <member priority="0">
          <callManager>
            <ports>
              <ethernetPhonePort>2000</ethernetPhonePort>
              <sipPort>5060</sipPort>
              <securedSipPort>5061</securedSipPort>
            </ports>
            <processNodeName>PBX.domain.local</processNodeName>
          </callManager>
        </member>
      </members>
    </callManagerGroup>
  </devicePool>
    <sipProfile>
    <sipProxies>
      <backupProxy></backupProxy>
<backupProxyPort></backupProxyPort>
      <emergencyProxy></emergencyProxy>
      <emergencyProxyPort></emergencyProxyPort>
      <outboundProxy></outboundProxy>
      <outboundProxyPort></outboundProxyPort>
      <registerWithProxy>true</registerWithProxy>
    </sipProxies>
    <sipCallFeatures>
      <cnfJoinEnabled>true</cnfJoinEnabled>
      <callForwardURI>x-serviceuri-cfwdall</callForwardURI>
      <callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
      <callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
      <callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
      <meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
      <abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
      <rfc2543Hold>false</rfc2543Hold>
      <callHoldRingback>2</callHoldRingback>
      <localCfwdEnable>true</localCfwdEnable>
      <semiAttendedTransfer>true</semiAttendedTransfer>
      <anonymousCallBlock>2</anonymousCallBlock>
      <callerIdBlocking>2</callerIdBlocking>
      <dndControl>0</dndControl>
      <remoteCcEnable>true</remoteCcEnable>
    </sipCallFeatures>
    <sipStack>
      <sipInviteRetx>6</sipInviteRetx>
      <sipRetx>10</sipRetx>
      <timerInviteExpires>180</timerInviteExpires>
      <timerRegisterExpires>3600</timerRegisterExpires>
      <timerRegisterDelta>5</timerRegisterDelta>
      <timerKeepAliveExpires>120</timerKeepAliveExpires>
      <timerSubscribeExpires>120</timerSubscribeExpires>
      <timerSubscribeDelta>5</timerSubscribeDelta>
      <timerT1>500</timerT1>
      <timerT2>4000</timerT2>
      <maxRedirects>70</maxRedirects>
      <remotePartyID>true</remotePartyID>
      <userInfo>None</userInfo>
    </sipStack>
    <autoAnswerTimer>1</autoAnswerTimer>
    <autoAnswerAltBehavior>false</autoAnswerAltBehavior>
    <autoAnswerOverride>true</autoAnswerOverride>
    <transferOnhookEnabled>false</transferOnhookEnabled>
    <enableVad>false</enableVad>
    <preferredCodec>none</preferredCodec>
    <dtmfAvtPayload>101</dtmfAvtPayload>
    <dtmfDbLevel>3</dtmfDbLevel>
    <dtmfOutofBand>avt</dtmfOutofBand>
    <alwaysUsePrimeLine>false</alwaysUsePrimeLine>
<alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
    <kpml>3</kpml>
    <natEnabled>false</natEnabled>
    <natAddress></natAddress>
    <phoneLabel>phoneLabel</phoneLabel>
    <stutterMsgWaiting>0</stutterMsgWaiting>
    <callStats>false</callStats>
    <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
    <disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>
    <startMediaPort>10000</startMediaPort>
    <stopMediaPort>20000</stopMediaPort>
    <sipLines>
      <line button="1">
        <featureID>9</featureID>
        <featureLabel>Admin</featureLabel>
        <proxy>PBX.domain.local</proxy>
        <port>5060</port>
        <name>6002</name>
        <displayName>6002</displayName>
        <autoAnswer>
          <autoAnswerEnabled>2</autoAnswerEnabled>
        </autoAnswer>
        <callWaiting>3</callWaiting>
        <authName>6002</authName>
        <authPassword>password</authPassword>
        <sharedLine>false</sharedLine>
        <messageWaitingLampPolicy>1</messageWaitingLampPolicy>
        <messagesNumber>80</messagesNumber>
        <ringSettingIdle>4</ringSettingIdle>
        <ringSettingActive>5</ringSettingActive>
        <contact>105</contact>
        <forwardCallInfoDisplay>
          <callerName>true</callerName>
          <callerNumber>true</callerNumber>
          <redirectedNumber>false</redirectedNumber>
          <dialedNumber>true</dialedNumber>
        </forwardCallInfoDisplay>
      </line>
      <line button="2">
          <featureID>21</featureID>
          <featureLabel>test</featureLabel>
          <speedDialNumber>4444</speedDialNumber>
          <featureOptionMask>1</featureOptionMask>
      </line>
    </sipLines>
    <voipControlPort>5060</voipControlPort>
    <dscpForAudio>184</dscpForAudio>
    <ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
    <dialTemplate>dialplan.xml</dialTemplate>
  </sipProfile>
<commonProfile>
    <phonePassword></phonePassword>
    <backgroundImageAccess>true</backgroundImageAccess>
    <callLogBlfEnabled>1</callLogBlfEnabled>
  </commonProfile>
  <loadInformation>SIP69xx.9-4-1-3</loadInformation>
  <vendorConfig>
    <disableSpeaker>false</disableSpeaker>
    <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
    <pcPort>0</pcPort>
    <settingsAccess>1</settingsAccess>
    <garp>0</garp>
    <voiceVlanAccess>0</voiceVlanAccess>
    <videoCapability>0</videoCapability>
    <autoSelectLineEnable>0</autoSelectLineEnable>
    <webAccess>1</webAccess>
    <g722CodecSupport></g722CodecSupport>
<daysDisplayNotActive>1,2,3,4,5,6,7</daysDisplayNotActive>
    <displayOnTime>08:30</displayOnTime>
    <displayOnDuration>09:30</displayOnDuration>
    <displayIdleTimeout>01:00</displayIdleTimeout>
    <displayOnWhenIncomingCall>1</displayOnWhenIncomingCall>
    <spanToPCPort>1</spanToPCPort>
    <loggingDisplay>1</loggingDisplay>
    <loadServer></loadServer>
  </vendorConfig>
  <networkLocale></networkLocale>
  <networkLocaleInfo>
    <name></name>
    <version></version>
  </networkLocaleInfo>
  <deviceSecurityMode>1</deviceSecurityMode>
  <authenticationURL></authenticationURL>
  <directoryURL></directoryURL>
  <idleURL></idleURL>
  <informationURL></informationURL>
  <messagesURL></messagesURL>
  <proxyServerURL></proxyServerURL>
  <servicesURL></servicesURL>
  <dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
  <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
  <dscpForCm2Dvce>96</dscpForCm2Dvce>
  <transportLayerProtocol>2</transportLayerProtocol>
  <capfAuthMode>0</capfAuthMode>
  <capfList>
    <capf>
      <phonePort>3804</phonePort>
    </capf>
  </capfList>
<certHash></certHash>
  <encrConfig>false</encrConfig>
</device>

Create the dialplan.xml file in the tftp root and add something similar to the following (failing to do this will result in the phone blindly dialing as soon as you press a button):

<DIALTEMPLATE>
  <TEMPLATE MATCH="999" TIMEOUT="2"/><!-- UK emergency services. Wait 2 seconds, then dial -->
  <TEMPLATE MATCH="6..." TIMEOUT="2"/><!-- Internal extensions 6000 to 6999. Wait 2 seconds, then dial -->
  <TEMPLATE MATCH="0......" TIMEOUT="2"/><!-- 7 digits. Wait 2 seconds, then dial -->
  <TEMPLATE MATCH="0......." TIMEOUT="2"/><!-- 8 digits. Wait 2 seconds, then dial -->
  <TEMPLATE MATCH="0........" TIMEOUT="2"/><!-- 9 digits. Wait 2 seconds, then dial -->
  <TEMPLATE MATCH="0........." TIMEOUT="2"/><!-- 10 digits. Wait 2 seconds, then dial -->
  <TEMPLATE MATCH="0.........." TIMEOUT="2"/><!-- 11 digits. Wait 2 seconds, then dial -->
  <TEMPLATE MATCH="0..........." TIMEOUT="2"/><!-- 12 digits. Wait 2 seconds, then dial -->
  <TEMPLATE MATCH="0............" TIMEOUT="2"/><!-- 13 digits. Wait 2 seconds, then dial -->
  <TEMPLATE MATCH="0............." TIMEOUT="2"/><!-- 14 digits. Wait 2 seconds, then dial -->
  <TEMPLATE MATCH="*." TIMEOUT="2"/><!-- * and 1 digit for asterisk. Wait 2 seconds, then dial -->
  <TEMPLATE MATCH="*.." TIMEOUT="2"/><!-- * and 2 digits for asterisk. Wait 2 seconds, then dial-->
</DIALTEMPLATE>

Add the following DHCP options, I'm using a Sophos UTM 9 firewall and the options are as follows (in each option, specify the name/IP of the target TFTP server):


Now you should be ready to flash the phone. As a note I did not have to to configure the phone at all, I simply followed the procedure below and the phone found the firmware and flashed. There were some files not found in the TFTP root but these can be ignored.

A factory reset of the phone is the same as below but without the tftp server being available.

  1. Remove the power from the phone.
  2. Press and hold #
  3. Connect power (power cable or PoE)
  4. Wait a couple of seconds and your line lights should go solid. Mine went green other models go amber/red.
  5. Press 123456789*0# (note: as soon as the first button the previous sequence is pressed all the keypad lights go red).
  6. The phone restarts and boots to the TFTP server.
After approximately 30 seconds if all is well you'll see output in the TFTP log and a progress bar on the screen of the phone:


I had the file server on a different firewall controlled subnet to the phones and even thoughI had opened 69 UDP for TFTP I had failures to down load the files. Basically there are other dynamic ports used during the flash process, temporarily opening up everything to the TFTP server from the DHCP address range  solved TFTP boot failures...

You'll see failures for the TLV files, these are certificate lists that Cisco Call Manager uses and can be safely ignored in our non-Cisco SIP environment.

The phone will finally start and stay as 'not registered' for about 30-45 seconds after which, if you have configured the cnf.xml file correctly, it should register with the PBX.

Obviously test that everything works correctly for you, if you need to make changes to either the cnf.xml or dialplan.xml files, just edit them in the TFTP root and repeat the above process. The altered files are re-copied and the phone will reboot with the new config.








Sunday 9 September 2012

The Sacred Geometry of Chance


What better way to spend a week in August?
We were bored. It was hot, stiflingly so and the thought of getting up and doing something seemed untouchable. We sat frustrated, watching the squirrels uncaringly gnaw through tents and steal food as they always do in the summer. Greg, an Australian, his fuse lit about something, abruptly jumped to his feet mumbling something about giving the vermin something they would never forget. Not entirely sure what he was up to I followed his lead.

Observing this sudden surge of activity, the lady in the site next to us politely enquired as to what we were doing.

Greg rolled his eyes and mumbled, “We're going to put a Squirrel into low earth orbit”, as if he'd been asked that same question a thousand times and the act launching a rodent into the air at high speed, a normal thing to do.

In reality Greg wasn’t too far off the mark. I’ve seen them sautéed and eaten by Koreans, on the business end of a 2kg rock and Burt even brought his .41 Magnum Ruger revolver specifically to “nail” a few of the little beasts but we managed to get him to put it away when he levelled it at my tent after drinking a litre of rum. 

We looped a rope around two pine trees, wound into it a stick that became so tight a Medieval Mangonel had nothing on our evil device. On the end of our Squirrel Flinger we attached a pad upon which we smeared the peanut butter bait and pinning it to the ground we withdrew to our tents.

Soon enough an unsuspecting test pilot approached the bait with trepidation and after a moment of indecision, hopped aboard.

The trap was sprung.

The arm accelerated upwards and spun round in an arc, whumping and wobbling like an unbalanced rotor blade. I didn't see a petrified airborne squirrel hurtling through the trees.

Bollocks.

After about thirty high velocity revolutions the arm came to a rest, dangling limply.

“Did you see it go?”, I asked.

“No mate”

This was very odd.

Approaching the Flinger we heard some pathetic squeaking. Peering around the other side appeared a very unhappy Squirrel.
 
From what we could deduce, it held on to the bait stick and survived 30Gs just below the speed of sound. The rodent dropped to the ground and wobbled away in a drunken state.
 
We looked at each other in disbelief and knew without a doubt that if man wants to go to Mars they should send Yosemite Squirrels first. 

 

The route: Zenyatta Mondatta



After two lengthy groundfalls, a year spent recovering and an all too disturbing familiarity with grey NHS waiting rooms I wondered why I was here again. After fixing a pitch on Zenyatta Mondatta on El Capitan in Yosemite Valley I wanted nothing more to do with it and began to question my reasons for climbing.
 
I then ran into Jeff and through his enthusiasm changed venues. We had a jaunt on the Pacific Ocean Wall which cleared my mind and subsequently I felt a more certain to have another go at Zenyatta.

When we returned, I met Andy and Sean, two Aussies hailing from Brisbane.
 
With Andy being sick, Sean was planning to go it alone on the Zodiac and late one evening in Camp 4 he came over to get the beta for it as I'd soloed it the previous year. It occurred to me that it wasn’t very intelligent for the two of us to solo within twenty metres of each other so I asked him with efficacious apprehension if he was interested in climbing Zenyatta with me.      

Turning to see if I was serious, he momentarily pondered my slurred invitation as I tentatively gripped my tenth beer of the evening.

“All right mate, yeah, why the fuck not” 

We were in business.


Packing the equipment at the base of the route

 

The next day we slogged up the talus ferrying 200lb loads to the base. The Titanium in my shin gave me pain, the top two screws out of 12 were loose and I could feel the heads retreating from the bone. 

That evening I re-led the first A4 pitch consisting of rivets to many small fixed ‘heads interspersed with creaky TCU placements, more heads, two rusty ¼” bolts, a hook to ten serried pin placements and more hooking to the belay. Sean leapt onto the fixed lead line and cleaned it as soon as I was down, setting the pace for the days to come.

The morning was slow after celebrating our decision to go for it the evening before. We said little to each other as we threw everything into the bags. With every push of the Jumars the cold morning air chilled me less and less and the ground rapidly fell away. Leaving the horizontal world for six days felt good and after ten minutes I eventually made it to the belay and set up to haul.

Sean followed me up and clipped into the opposite end of the rope. Jumping off, we space-hauled the two big bags, two buckets and hardware bag in one shot. By 9.30 all our stuff was at the anchor and I tooled up for the A4+ second pitch.

Hooking from the belay into a series of vertically staggered ‘head seams linked with rivets I came to the partially broken “Death Flake”. At one time, it must have been a menacing feature which threatened a fatal groundfall from 200'. Now it creaks and groans like an aging troll with a bark far worse than it's bite.      

The climbing to the belay became circuitous and technically difficult. Because of  the rope drag I didn’t place any protection in the whole 60m zigzagging ‘head pitch. Tying off the lead and haul lines at the belay, I yelled to Sean and he cut the bags free. Like a plumb line, the bag cluster drove home how dangerously steep this route was, a potential retreat would be very difficult.

Clipping into the haul line, Sean sat back and became a human counter-weight. As I lowered him 60m we simultaneously raised the bags to the anchor. His alacrity was commendable, he never complained about jugging the initial pitches twice and was always easy going when it came to the tiresome work of hauling.

The completion of the backbreaking space haul to the top of pitch 3. Note the two buckets, one for breakfast goodies (danishes and pastries) and the other for human waste...don't mix 'em up!

We now found ourselves in one of El Cap's infamous diorite bands. The rock became slate-like, loose and fractured. Above us arched the ragged corner of the third pitch. It didn't look as hard or as deceptive as the last two and we could now see the lightening-bolt roofs and the other big roof way up there, two features I was psyched to get to grips with.

The pitch started with heads and shallowly driven pins then a couple of long sections of hooking above a ledge system that left nothing to the imagination should I fall. At the end of the pitch, with no gear in place, I traversed under a small roof on a marginal knifeblade stack driven upwards, a #3 Camelot followed by a gnarly hook move on the lip from which I reached the belay via three copperheads.

 
Sadly, on the first of April the following year Matt Baxter would tie in to the lead line one last time and rope solo the third pitch after soloing the first two. A copperhead that had probably been placed on the first ascent strained to support his weight. Seemingly safe, the deceptively weak copperhead failed as did the carabiner clipped to a piece of gear below him. His rope severed during the fall after it snagged behind a flake sending him to his death.
 

Sean arrived and we hauled all our crap up and I got settled in. He, having not done much nailing and having never really used hooks and heads before, agreed that I would deal with the first three hard pitches.

Sean about to gear up to lead the 4th pitch
 
 
Now it was his turn.

He began climbing right over my head on his first nailing lead. The first move was a hook and then a very marginal pin. The next was gripping for both of us. A lost arrow, driven in under 5mm and tied off. Under the test it levered right down so he knocked it out and placed it again. Getting another pin of similar integrity about eight centimetres above, he tied them together. Under the test, they levered slightly but held.

Subsequently, he drove in three more pins that couldn't restrain a fart after which he started hooking up and left. I was really impressed.

"How's it going up there?"

"This is great fun!"

Gulp!

I cringed. I have always been a bad passenger in a car and this was incredibly similar to racing down a dark lane with the headlights off and your life in someone else’s hands.

He disappeared from view and I relaxed a little, the angle lessened and led him into some very loose free climbing. Soon he reached the belay and as it was getting dark, he abseiled back down for the night.

Evenings are great up on El Cap. I surveyed the base of the wall and noticed a party racking up for the Zodiac - just getting a couple of pitches rigged, thinks me - they don't have haulbags. On the south-eastern horizon the full moon crept into the sky. Capitalising on the moonlight, the Green Dragon from the Valley Floor Tour came rumbling around the bend and eventually parked by the meadows.

What we disliked the most about the Green Dragon was that one particular guide got the entire bus load of tourists to cheer at the top of their lungs. This is bad enough when you're gripped on a hard lead, but at night it's beyond a joke. You get settled in and your just drifting away into never never-land when all of a sudden “Heeeeyyyyy!” from the meadow.

“What the fuck was that?”, mumbled Sean.
 
“The fucking Green Dragon”

“I was asleep”

“Yup”

Sean leaned over the ledge and looked down to the road.

Fuck off you fucking wankers!”, he screamed.

No doubt the tourists thought that this was all good fun, not considering that climbers might be exhausted and trying to sleep. They must have caught Sean's tirade and assumed they had established some kind of communication with us as no more than five seconds later they did it again.

Bollocks to it, I needed to sleep. Well it was over for tonight. Eyes shut. Head down. Ahhhh!

Thwack, thwack, thwack.

“Hey dude, off belay!”

“Okay, belay off”

What the hell is going on? Why tonight? A speed ascent of the Zodiac.

“I don't fucking believe this is happening”, Sean mumbled from the depths of his sleeping bag.

“Mmmm”

Between the tourists and the tumultuous individuals on the Zodiac, murder and terrorism were plotted.

The following morning we cleaned and hauled. The next lead was one of the first places where one of us could be severely hurt. 

All racked up, I deftly hooked to a fixed pin, clipped it and felt for the small drilled holes that I knew would be above. The first two were easy to find and the specially pointed Chouinard hooks I'd brought along worked fine. For the next placement I had to second step in my etriers on an overhanging section pulling straight back on the hook. With my legs straining to keep me stable, I searched frantically for the next placement. The ledge and corner below me waited patiently for a mistake. Unable to locate it, I dropped down and tried to relax - the weighted hook ground at the edge of the hole.

Sweat dripped into my eyes. Standing back up, I searched again, my fingers interrogating every ripple and bump that could reveal a hole. Suddenly I found it - I placed a hook and moved over.

Several more moves took me to an unceremonious flop onto a sloping shelf and down this I walked to an A2 corner that was so loose I wished I was back at Gogarth. Cams parted blocks, huge slivers of diorite threatened to decapitate me and I kept worrying about the rope being chopped. I was finally led to a nice little belay nestled in a corner with a berserk bird squawking away inside a crack. I called to Sean to cut the bag free.

Taking rivets off the belay, he climbed into a slabby groove that led to a narrow, awkward Quarryman-like "V" slot which required a lot of thrashing and swearing on his part.

Next, I had the lightning-bolt roofs. Dark and threatening, they scared something deep down inside me. The A3+ wasn't hard, A1 probably, and I soon made it to the lip and gained the super smooth rock via several rivets. Feeling the oppressiveness, I looked at my watch. 8pm. I'd felt compelled to get out of that Stygian place for some time and I now needed no more encouragement. I clipped the two rivets and lowered off, leaving the rack at my high-point.


Sean all plugged in and reading at the belay
Descending and spinning into space in the dusk light gave me a good view of the Diorite with these amazingly sharp pinstripe-like quartz seams running horizontally across the wall. The world must have been a truly awesome place as it actively tried to purge its core through the surface and created what we now climbed. It really struck me how amazing the whole world must have been as entire continents cooled and rock like this, fractured and high pressure molten Quartzite surged into these fissures. Dinosaurs ruled and died, ice ages came and went and now millions of years later, erosion by glaciers and the elements permitted climbers like us to see the earth as it was when it was being shaped from within.

I pulled myself into the belay. We set up the double ledge, chatted and ate.



8am bicep workout. James jugging to the previous day's highpoint at the top of the Lightning Bolt roofs. The hardware was left at the rivets above to avoid having to lug it back up!
 
The following morning was very cold. At 8am Sean lowered me 20' out from the wall and I took in the 1500' drop between my legs. Jugging to the rivets, I warmed slowly.  I made a hook move from my top substeps and clipped another rivet. From there I reached the overhanging crack that's visible from the ground and was brought awkwardly back to the vertical. Slightly expanding knifeblade placements took me through loose flakes and tied off pins to the belay.

The next pitch was mine also. After re-racking, I traversed leftwards from the belay on hooks and climbed the shallow A4 corner which from a hook took me up under the roof to some interesting loose climbing and an almost surreal environment. I felt like I was back in Wales, climbing through the limestone roofs at the Great Orme with Dave.         

The original expando is now gone but the high quality of the pitch remains. Marginal pins driven upwards into flared pods, ‘heads and more pins lead you through a small expando and up around the edge of the roof to the belay. Looking to my right I saw heads and rivets that meandered into the same anchors and departed into nowhere - The Shortest Straw and also Eric Kohl's Abstract Impressionist which has the most terrifyingly thin first pitch I've ever seen.

Sean cleaning the roof pitch
 
Within half an hour Sean was already leading up an incipient leftwards trending seam that took only knifeblades and heads.

"I don't fucking believe this!"

"What's that?"

"Some idiot has hammered a number six nut flat onto the rock!"

He tested and moved over. Appearing not to be too flustered he selected a medium knifeblade and drove it in to the hilt. It became obvious when he continued to belt it another twenty times that he didn't like that flat nut.

The seam fizzled out and a series of rivets took him diagonally right and into a yawning A2 dihedral that led straight to the belay.

This is what struck me about the route, you seem to wander all over creation but in the end, the belays are all roughly on top of each other. Zenyatta is a truly natural line and a testament to Bridwell's genius.

After I cleaned the pitch, we abseiled back to the lip of the roof and set up the ledge getting ready for the evening. Later on, we were just dozing off when I glanced at the southern horizon.

"Jesus Sean, look!"

A fireball was slowly making its way from the east and traversed ever so slowly behind Higher Cathedral and continued west. It was huge, like a meteor with a glowing spherical front and a giant tail that spread as the object traversed the sky. It showed no sign of fizzling out as it went behind Glacier Point and became too low to be seen.

Sean sat up and looked at me with a shocked expression on his face.

"What in hell's name was that?"

"I have no idea...."

It reminded me of Greg Child's similar tale which eventually led to him and Randy Levitt giving their new route the name Lost In America.
        
Sean cleaning my lead


Morning came and I was apprehensive. The next pitch which I was to lead was graded A5 on the topo, it appeared to be short and sharp. Sean jugged to the next belay and hauled the bags. I followed nervously.

Continuing along the corner Sean had been climbing the previous evening to where it ended; I clipped a fixed copperhead and stepped up.

There it was in all its glory, the first A5 section of the route. Climbing higher, I contemplated my life as I hung from the last rivet before the A5 flake.

Hanging like a dagger poised to kill me, I carefully reached across and placed a #1 Camelot. Applying my weight, I cringed expecting it to expand.

Nothing, not a peep.

I was very wary. Reaching up, I placed another cam and moved on - nothing. Continuing along the flake, cam after cam was totally bombproof. Elated, I yelled down to Sean.

"This A5 is a piece of piss"

"Really!"

"Yeah, I'd haul off it"

He shook his head.

I drove an angle in to the hilt and climbed three heads and then a funky hook traverse to the belay.

We hauled and cleaned, ate a snack, then racked Sean up for the 200' 11th pitch.

He started up the initial A4 section with apparent ease considering that this was his fourth nailing lead. He stitched up several seams that were linked with rivets, then placed a cam under a paperback sized expanding-exfoliating flake. He'd done this above only one rivet and a bunch of marginal pin stacks - a move that impressed me when I cleaned it. More pins, hooks and rivets led him to the belay adjacent to a big spike.
        
With the second A5 pitch above, I racked up and set off up the old expanding spike. From a tieoff on the top, I moved tentatively across the wall. This was expando time.

I drove a 3/4" angle under the partially broken flake and watched it open slightly as it went home. Not happy with this I wiggled in a nut and equalised them. Looking at the rock to the left I noticed a hairline seam that was causing the expansion, eventually it would creep all the way down and some poor sod will get air miles the hard way.

After another move, I looked at my watch - it was getting late. Sean lowered me off.

“What did you lower from….a rivet?”

“Nah, a hook on the expando”

He grinned, “Mad bastard”.

Dinner was consumed greedily. I polished off the last of the stale greasy cheese in my three tortillas filled with Chilli Con Carne. The dark crept over us and the familiar light of the moon followed, casting eerie shadows over the wall. Our postprandial conversations dwelled on insane things, the future, where we had been before and plans for the years to come. We watched the traffic and people in the meadow who'd come to look at El Cap bathed in soft light. We finally settled in.
 
The night passed too quickly and morning came too soon.

Do I have to get up?
 
Opening my eyes I took in the light creeping over the wall and without looking at my watch noted its position. 7.30am. Raspberry Danishes and bread smothered with cream cheese were thrust at me. Half an hour later I tied into the rope and jugged to the flake.

Tenuously ascending the shallow bashie corner, I placed several alumiheads. Above this lay five rivets. I left wires on the first two and back-cleaned the rest. Under an expando, I placed a special knifeblade I'd waffled for placements like this. A copper circlehead led me rightwards onto a bigger aluminium circlehead from which I started to place a half inch angle.

As I was driving the angle piton upwards, there was a sharp jolt…

Headfirst I was falling. I felt myself slow as each piece just capable of just holding my bodyweight, failed. Without warning I surged forward with each failure, accelerating to the next. My investment cast hammer hit me on the back of the head very hard and my comprehension of the situation dulled. I saw the copperheads whip past in my periphery off to my right. Gritting my teeth in anticipation of impact, adrenaline surged into my blood, my eyes bulged. The granite spike zoomed up to me. Another piece of gear failed. Twenty feet, fifteen, twelve, ten; suddenly I lurched to a halt. The hardware attached to my chest harness gave a hefty “clank”. Suspended upside down, blood pooled in my head, brain-cells shorting out by the bucket-load - not that I had many to start with... I almost laughed when I looked at the pitiful rivet straining against my mass, and the ten copperheads below that which couldn’t stop a falling interest rate. It was Friday and this was my first fall on the route but I couldn't help it, deep down I was having a good time.

Those moments are often a haze of fear but I had one distinct feeling throughout. I just had to hang on for the ride. There was nothing I could do, I was at the mercy of both the rock and gravity. I had been whipped to left, inverted and spun over twice by the time I finally stopped about 50' lower. My brief supplication to whatever controlled my future had paid off.

I was totally gripped, not so much from the fall but from what had caught me and what lay ahead had I not stopped where I did.
    
"Jesus Christ mate are you all right?”, Sean yelled.

“Just lower me off”, I said as my heart rate subsided.

Arriving at the belay, Sean pulled me in and I relaxed.

“Fuck!”, was my plosive reaction.

“What stopped you?”

“A rivet....the last one”, I stammered quickly.

He was as shocked as I was. Fifteen minutes later and still shaking I jugged back up, replaced the broken rivet and the failed circlehead. An hour later I'd traversed out right then up, passed the false belay and made it to the slabby 12th anchor.

Sean leading off the belay. The flat nut can be seen poking out through the gap under his right arm.
 

Next, Sean led up an aesthetic arching corner which he told me on more than one occasion how nice he thought it was.

"This is really nice!"

Yes Sean.

It was, really.

Lost In America joined us about halfway up and we could see it's crux “Fly or Die” pitch, also we gawped at the “Levittator” on Scorched Earth, a yawning 5.11 offwidth above A4 knifeblades – potential death on a shitty stick.

Sean disappeared behind a large flake and minutes later declared the pitch done. He hauled, I cleaned and when I arrived we decided to knock it on the head early.

I placed a rivet to hang our ledge from, and we got ready. The evening was spent in a jovial mood and we lived it up as much as two people could on an area smaller than a single bed…

The following morning, my last lead took me off up a corner which trended into a short arch. This route just didn't let up. I climbed a thin seam for ten feet abruptly ending with a #1 copperhead pasted into a barely visible seam. I began driving home a  1/2" angle.

It rang not.

I stopped hammering and watched the block expand all on it’s own. Not good. Hitching myself up a little, I selected a #3 copperhead and pasted it in above the block. Moving on, I gained another five feet via two marginal hook moves on small brittle edges  taking me in the wrong direction for the belay twelve feet away. Swallowing hard I hooked very delicately rightwards and tentatively clipped the anchor.
 
James belaying

Starting the next pitch, Sean free climbed along a flake to a line of rivets. Looking off to the east, we could see the tops of all the routes….

Casting my mind back, I remembered my last day on the Zodiac the previous summer as I looked at the belay and the majority of the 15th pitch. I recalled the summit fever I had by that point and the emotion that it engendered welled up within me. The reality of actually being back after my accident only fully struck me at that very moment.

Sean traversed a thin seam on the blank wall above my head. I sat there listening to my walkman and taking in the scenery as one does when all of a sudden I noticed a person sitting on a lip of rock beyond the top of the Zodiac. He was waving - it was Andy.

“You're a sight for sore eyes”, I yelled.

“How's it going?”, he enquired.

“Pretty good”

Two hours later Sean scrambled over the rim and tied into the tree. I took about half an hour to clean the pitch. He and I struggled with the bags to get them up the slabs and through the bushes.

Team Zenyatta on the El Cap rim. We drank about 12 Gallons out of the 16 we hauled...that's 32 two litre Coke bottles of water!
  
“Where's Andy that lazy git”, I asked.

“On his arse up there”

Andy. Get your arse down here and give us a fucking hand with this”, I yelled.

“Fuck off”, a voice echoed back. We planned devious revenge.

Scrambling over the top we must've looked like a pair of stunned troglodytes.
 
We found he'd brought loads of food with him.
 
He cooked us a meal, we drank the beers he'd dragged up too, as well as the kettle chips, powerbars and other goodies.

We let him off - luckily for him.


Three Monkeys, Andy, Sean and James

 
Big Wall bog roll dispenser for the more discerning climber...
 
The morning after the week before...