Subscribe via RSS

Visual Studio 2017: Error Deploying to Raspberry Pi 3

Any chance you've just opened up sample code to deploy an ARM-based project to a Raspberry Pi and you get this error?

DEP6100 : The following unexpected error occurred during bootstrapping stage 'Connecting to the device 'IP ADDRESS OF PI'.': 
MissingMethodException - 'Microsoft.Tools.Connectivity.RemoteDevice.Ping()'

Did you just install the Windows 10 SDK? My first recommendation is to reboot your machine! ...but actually, you don't really have to do that. Just restart visual studio. And yes, I know you closed it when you were installing the SDK... for some reason even opening it up straight after didn't work. A second restart of just VS2017 worked fine.

Also.. the default screen resolution is wrong on the PI when with a 7" 800x480 LCD. It really screws with the touch-screen input. Thanks to this article, we only have to do the following:

$username = "administrator"
$password = "[YOUR PASSWORD]"
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $securePassword

$pstimeout = New-PSSessionoption -OperationTimeout (1000*60*5)
Enter-PSSession -computer [IP OF RASPBERRY PI 3] -Credential $cred -ErrorAction Stop -SessionOption $pstimeout

Save the above as a script and run it in the PowerShell ISE.

[IP IF MACHINE]: PS C:\> SetDisplayResolution.exe 800 480
Set Display Resolution and Orientation

replace line: gpu_mem=32                  # Set VC to 32MB, ARM DRAM to (1008-32)MB
append line: hdmi_mode=87
append line: hdmi_cvt=800 480 60 6 0 0 0
append line: lcd_rotate=0
Success! - You now need to reboot the device
use "shutdown -r -t 0"

Reboot!

25May/180

Germany, 2018 – Miniatur Wunderland

Miniatur Wunderland is nothing short of crazy. Two levels of HO scale model railroading at its finest. It's been around for over 10 years and has nearly seen the population of Australia in visitors! We were on a road-trip in a beautiful XF Jaguar (man, the Autobahns are fun) and I made sure we detoured via this monument.

DSC 0402 DSC 0403 DSC 0404

Miniatur Wunderland is located in Hamburg in a converted warehouse. Actually, they were still converting the warehouse (or the lower levels) when we were trying to enter and had to walk around a team angle-grinding the staircase... Regardless, we made it inside and even beat the queues. As we were leaving it turns out there was a wait to get inside!

DSC 0410

DSC 0411 DSC 0412 DSC 0414

The place is split up geographically, but all layouts are completely connected. It then turns where's-wally style with all sorts of trinkets to find. You also then get pushbuttons on the railings to activate random animations on the layout. In the last shot above, the conservatorium, which is a scale model of the actual building in Hamburg, splits open and the orchestra plays. It's pretty damn amazing!

DSC 0418 DSC 0420DSC 0426

Day and Night are modelled... snow as well! As you traverse the layout you end up going through America and all of the Europes... The model then gets two-level and you get a chance to watch trains tackle some serious terrain.

DSC 0437 DSC 0446 DSC 0449

There's even a train elevator working automatically behind the scenes!

DSC 0450 DSC 0451 DSC 0452

Of course, a lot of people come for the airport. The planes even take off and land! Also, keep your eyes open for whacky vehicles... which also take off and land... and even play appropriate theme songs when doing so!

DSC 0439 DSC 0440 DSC 0441

The control room is also crazy. There were at least 5 full-time staff watching cameras and reports. Some were even sending rescue locos in to bump trains.

DSC 0433

DSC 0455 DSC 0457 DSC 0458

DSC 0459

DSC 0461 DSC 0464 DSC 0465

DSC 0467 DSC 0468 DSC 0469

And finally... don't forget to shop and eat.

DSC 0470DSC 0471 DSC 0472

The cafe at the end is modelled as per the internals of a buffet carriage. All train nerds should visit this place!

Filed under: INTL No Comments
24May/180

Amsterdam, 2018 – Northern Metro Extension

With my brother living on the northern side of the Ij River, I was happy to see (via google maps) that there was a newly built station just near his house! Turns out that it's opening soon... and isn't actually ready for passengers. Regardless, they had constant EMUs in test, up and down the line seemingly running to the timetable.

This line will really help my family! I'm looking forward to riding it next time I'm in town... will also really help getting to the thrift stores in the south!

Filed under: INTL No Comments
23May/180

Amsterdam, 2018 – Amsterdam Centraal

This station looks nicer every time I visit it. Having my brother's bike available meant that I could go for leisurely cycles at-will, and most of those involved crossing the IJ on the free ferry and then hanging around Centraal watching traffic. One afternoon, towards the end of the trip, saw an hour spent on the platforms watching the comings and goings.

DSC03356

DSC03357 DSC03358 DSC03359 DSC03360DSC03362

DSC03364

DSC03365

DSC03366

I'm still a total fan of the Koplopers and was happy to see them still in service. It's been 7 years since I rode one and I've also passed on the HO Lima Model that I previously owned.

DSC03369

DSC03370 DSC03374 DSC03379 DSC03389 DSC03397

DSC03393 DSC03394 DSC03395

DSC03399

DSC03381 DSC03384 DSC03388

...That's enough photos... enjoy.

Filed under: INTL No Comments
22May/180

Amsterdam, 2018 – Thrift Shopping

Although the trip resembled a Chevy Chase movie, I still had Steven-time to jump on a bicycle and browse the used stores of Amsterdam. Timing for this trip was pretty good; Not only did I have "Europe's biggest flea market" on the weekend I landed, the weather was fantastic and the trip ended with King's Day.

IJ Hallen Market

Known as Europe's largest flea market, this event is held on the northern edge of the Ij River, just north of Amsterdam Centraal. A quick ferry will get you from the station to the market, but I rode there as my brother lives on the northern side of the river. This market was huuuuuuge and there was lots to be found. I must admit that there were very little electronics; but there were enough trains and vintage electronics to keep me entertained.

DSC 0259

DSC 0261 DSC 0262 DSC 0263

DSC 0266 DSC 0267 DSC 0268

Note that there're two trams and other random vehicles on site. There's also an airbnb in a crane, if you feel like staying really close. Actually, I think you can also stay in the trams!

DSC 0269 DSC 0272 DSC 0271

DSC 0324

DSC 0265 DSC 0318 DSC 0320

Van Dijk and Ko

On the way back from the market above, I stumbled across Van Dijk and Ko. It's an old warehouse full of trinkets! Aaaaand there's a cafe to have beer and bitterballen when (or before) you've done your shopping.

DSC 0280

DSC 0276 DSC 0284 DSC 0287

DSC 0290 DSC 0292 DSC 0293

Some pretty random electronics around! If I lived in Amsterdam then I'd be in these places way too often... the limitations of my suitcase really did prevent a lot of splurging!

The Second-Hand Shop Bicycle Tour

The thrift shopping was always going to be a priority in Amsterdam. It officially started in Buikslotermeerplein, a day before the trip below, as this was close to my accommodation. Point A on the map is north of Centraal and contains a store from the appropriately-named chain known as Used Products. They're pretty much the Cash Converters of Amsterdam; same products, same customers, same fights.

DSC 0301 DSC 0304 DSC 0305

The op-shop is called Kringloopbedrijf De Lokatie. I have no idea what this means? But it was very op-shop-esque with little IT. Lots of books and clothes. Still fun to look through.

DSC 0306 DSC 0307 DSC 0309

The next day, it was time to jump on the bicycle and target the city. This started with a ferry ride across the IJ, arriving under the bus interchange of Amsterdam Centraal Station. From there, it was a clockwise tour of the outer canal cycling from store to store.

Points B and C on the map were both Used Products stores. Both had interesting electronics and retro games, but nothing that really caught my eye.

DSC 0338

DSC 0339 DSC 0342 DSC 0340

DSC 0344

DSC 0345 DSC 0346 DSC 0347

I even ended up riding a fair way past the zoo and checked out a neat railway bridge in the process.

Waterlooplein Markets (Point D) (Note that it's Waterloo Plane, not Water-Loop-Line) is a daily flea market in the middle of town. I'd been numerous time before and didn't end up there on this trip. For those interested, it's an open market with lots of souvenirs. Also good if you need a phone charger or a bicycle repair!

DSC 0333

DSC 0328 DSC 0330 DSC 0332

Mevius (Point E) (that link is a little weird, might be the parent company) was the next stop. It's a huge shed right next to the old Tram Museum (which wasn't operational!) and is full of all sorts of stuff. I nearly picked up a Gravis Gamepad and ATI AGP Card... but for some reason chose not too. Maybe they were just too grotty.

DSC 0354

DSC 0348 DSC 0349 DSC 0350

DSC 0351 DSC 0352 DSC 0353

I then ended up at HobbyLand (Point F). I'd actually picked up an old Marklin steamer at the IJ Hallen markets and needed traction tyres. The sellers didn't speak English and asked if I knew Deutsch. Either way I managed to fake my way to describing a rubber tyre and purchased a size that worked!

DSC 0355 DSC 0356 DSC 0357

Just around the corner was Ari at Point G. And, it's nuts! You only need to read the articles here and here. This place is a thin corridor of a house with crap packed up all walls and ... well ... wherever else it will fit.

DSC 0358

DSC 0359 DSC 0361 DSC 0364

Point H was another Used Products store.

DSC 0366

DSC 0368 DSC 0369 DSC 0370

One must not forget a healthy lunch...

DSC 0371

Point I was also another Used Products store.

DSC 0375

DSC 0377 DSC 0378 DSC 0379

Rataplan is at point J on the map and seemed to be a large op-shop style store. It allowed people to drop stuff off as well. There weren't many electronics and mainly just dealt with homewares and old clothes.

DSC 0380 DSC 0381 DSC 0383

Across the road was Antiekbeurs "Amsterdam 700". This is denoted by K on the map, which is partially covered by I. This was a cool place dealing mainly with furniture; no electronics but still very cool to look through.

DSC 0388

DSC 0384 DSC 0385 DSC 0386

After being slightly disappointed by the first Rataplan, I wasn't expecting this second one at point L. It's freakin' huge and full of cool stuff! Lots of IT actually... interesting LCDs and other bits, but nothing that would fit in my suitcase!

DSC 0389

DSC 0390 DSC 0391 DSC 0392

How cute is that colour-coordination!?

DSC 0396 DSC 0394 DSC 0395

They even have an alterations service! Meanwhile... it's just huge... but I think I mentioned that already.

DSC 0397

Next up was an afternoon in Amsterdam Centraal watching Koplopers. My favourite way to spend an hour.

Filed under: INTL No Comments
10May/180

How to convert XML into a class the easy way!

An on-the-side project, that's been going for quite a while now, extracts data from a remote service. For a very long time, this was done via reverse-engineered Java code, of which I then wrapped my own console app around. All worked very well until they changed the login service request format and stopped using the Java altogether.

The new version was just HTML and json and, but the actual payload of the data I cared about was XML. Yes, that's right, XML in a string via JSON. Who would'da thunk? Regardless of the insanity, I was still itching to parse it.

So, the usual Json to C# class generator was used to build the de-serialisable class for the initial packet. I then needed a quick and smart way to convert the XML into a class.

Turns out that there is also an XML to C# converter! Paste in your XML blob and, if correctly formatted, it'll return a class that the XML can be de-serialised into!

And, it worked perfectly. Well, nearly. There was one gotcha! The XML class I was decoding had one field called Text. This is not a valid name inside a deserialised class in C#. So call it a different name in the class but override it via an attribute, as per below.

[XmlRoot(ElementName = "g", Namespace = "http://www.w3.org/2000/svg")]
public class G
{
        [XmlElement(ElementName = "rect", Namespace = "http://www.w3.org/2000/svg")]
        public List<rect> Rect { get; set; }
        [XmlElement(ElementName = "text", Namespace = "http://www.w3.org/2000/svg")]
        public List<textitem> Texts { get; set; }
        [XmlAttribute(AttributeName = "fill")]
        public string Fill { get; set; }
        [XmlAttribute(AttributeName = "stroke")]
        public string Stroke { get; set; }
        [XmlAttribute(AttributeName = "transform")]
        public string Transform { get; set; }
        [XmlAttribute(AttributeName = "text-anchor")]
        public string Textanchor { get; set; }
        [XmlElement(ElementName = "g", Namespace = "http://www.w3.org/2000/svg")]
        public G[] subG { get; set; }
}

Those watching trains on maps in Australia have the above site to thank for the speedy recovery of the service :)

4Apr/180

Resetting Windows 10 Passwords

Sure, this isn't something a normal person should be doing, but this scenario required it. I'd just fixed a friend's laptop, or I thought I had, until I got a call 2 weeks later saying there were password issues again. Instantly I thought I'd screwed the BIOS up, but this time it turned out to be an entirely different error!

DSC 0243

Oh shit... who the hell are LizerdSquad? Is that a typo? Not many google results for this cute little hack. I asked my friend if he'd opened any suspicious emails lately and body-language told me 'yes'. Anyway... google to the rescue. Top Password has a good article on using Kali Linux to reset such a password.

I found a blank USB key and created a bootable drive of the base Kali Linux i386 'light' image.

iso2disc

Booting was easy enough... ESC to select the USB key as the boot device.

DSC 0244 DSC 0246 DSC 0247

DSC 0248

Or was it? After choosing 'forensic' mode, the system tried to boot until I was simply presented with a blank screen. Seems my video driver isn't supported? Fail-safe mode worked... but then I didn't have the chntpw command on the terminal! No amount of 'su' or 'sudo' got the tool. Does the 'forensic' mode mount other disks to provide the toolkit?

Trying a different approach...

Keep fighting Kali? Better just use this: A bootable ISO of the chntpw tool. And it worked perfectly! I burned it to the USB key using the 'MBR' option via the same tool as above. From startup, it booted straight into console mode. Whilst loading it even went further to find and diagnose the Windows partition.

DSC 0253 DSC 0254 DSC 0255

This laptop has a single user and a simple windows setup, so the default options were all correct already! Very nicely programmed. I chose through to clear the password and ... bingo!

DSC 0257

Don't worry about the 'tmp' error on the final save.

DSC 0258

Mission accomplished. Rebooting the machine just gave me a 'sign in' button instead of password entry box and we were at the desktop!

3Apr/180

Mixing and matching Xeon Processors?

So I recently came to acquire this beast. It's a beautiful 13-year-old IBM Intellistation Z 6221 with a 3.2ghz Xeon processor. I really dig the IBM styling... it's also ridiculously modular, not even requiring a screwdriver to rearrange drives. Unfortunately, due to its age, it's only 32-bit. In fact, it came with one (supports two) of the fastest and final 32-bit CPUs of the Xeon family.

DSC02568

DSC02569 DSC02570 DSC02571

The first step was to find extra ram to fill the 4 slots. This would only ever max to 8gb, so I needed 4 2gb DDR PC2100 dimms. Not so easy to find any more and prices are going up... either way they were sourced from eBay. I also, now that I think of it, accidentally sold the black floppy drive because a collector wanted it. It's now silver... and doesn't look too bad... but I'm on the hunt to fix that... Or maybe I'll put a zip drive in there...

Next step was to fill the second CPU slot... Thanks to the modular case, no screws were harmed during the dismantling of this product. As you can see below, the naked socket is neatly protected by a plastic shield that plugs into the heat-sink socket. There is, of course, no heat-sink; as there is no CPU in that second slot by default. You could choose this as an option when purchasing the unit.

DSC02125 DSC02126 DSC02130

It turns out that I had another Xeon desktop, in the form of an HP MLxxx. Although this was only a Xeon 2.7ghz, I'd read online that you may well be able to mix CPU speeds? First thing was to remove the CPU from the HP. This turned out to be very easy as its case was also very modular.

DSC02131 DSC02133 DSC02134

Instantly you can see that the heat-sink is different... the IBM used case-mounted fans with passive CPU-mounted heat-sinks, whereas the HP used heat-sink-mounted-fans. I inserted the CPU into the slot on the IBM's motherboard, but the heat-sink shape was different to the bracket mounted on the IBM motherboard. The heat-sink from the HP would not fit in directly!

DSC02138

I quickly tried to remove the bracket from the HP motherboard, with the intent on transplanting it into the IBM. After a lot of effort, it came off (the screws HP used were nearly torqued in!), but then it wouldn't fit in the IBM! It was too wide and long and actually wouldn't fit between the rows of capacitors. So much for industry standards!?

DSC02147 DSC02148 DSC02150

DSC02152

Ok... whatever... I mean how quickly can these things heat up? I'll just hold it in place for a quick test... before I mangle the heatsink to fit. Nope. Turns out the IBM wont even power up with this CPU in the second slot. Is this a fail-safe mechanism because the CPUs aren't matched? Is this CPU a dud? (I hadn't tried it prior...) Dunno.

Make sure the CPUs match!

Off to eBay, I found an identical SL72Y processor in England. It took a few weeks, but it arrived. Again, prior to hacking up the heatsink to fit, I thought I would install the CPU quickly as a test to see if the machine would POST.

DSC02562

Oh wait... it wouldn't just slot in... oh wait... look at those bent pins! I still don't know if it was the beer or the fact that it came off its little foam pad already-bent, but it required about 30 minutes of pain-staking twiddling with a pair of tweezers to get the damn thing in. DO NOT RUSH THIS PROCESS. At one point I thought all was lost as it just wouldn't mount... but after a lot of adjusting it went in.

DSC02556 DSC02564 DSC02566

A bit of hacking was then required to fit the HP heat-sink. I had to hack pieces out of the braces that screw down to the motherboard. I then had to bend a few fins on the actual heat-sink so they wouldn't ground-on or damage the rows of capacitors placed so nice-and-close to the CPUs. And then... it just freakin' worked... and the machine finally loaded Chrome at a proper speed on Linux Mate 18. Now to find a more-appropriate OS to run on this slightly ancient hardware!

Filed under: Retro No Comments
22Mar/180

Modding an original PlayStation

I hadn't played one of these since... maybe... 1996 when my neighbour and I got Abe through his quest. I found this unit at an op-shop recently for AUD$40 and couldn't resist.

DSC01581

The first thing to do was a tear-down + clean. Of course, a friend then told me he had a spare modchip for it.. so... why not do a proper job whilst the unit was still open.

DSC01583

In true Sony-style, the units disassemble perfectly easily and are neat and tidy inside.

DSC01585

Once you're down to the motherboard, it's simply a matter of determining where to wire the chip. To do this, you'll need to know which chip you have and which model motherboard. Mine was a Multi-Mode 3 and I installed it onto a PU-23 motherboard. I followed the instructions here.

DSC01586 DSC01590 DSC01593

Flatten the chip so that you can glue it on top of an IC later.

DSC01596 DSC01604 DSC01599

Then just run all the wires with as-little-slack-as-possible. This just means you wont have any issues with wires getting in the way of screws later.

DSC01605

Test when the case is open, test when the case is closed and test again later. When testing, the CD tray mechanism requires the case to be held firmly together so that spacing is correct for laser alignment.

DSC02450

Last time I was in BKK, I purchased a selection of random Japanese games. Pachinko, Abe's A'go go(Odyssey), Myst and Tekken 3. Turns out they all work perfectly.

DSC02462

Abe's A Go Go is actually a random text-replacement version of the english version. The cutscenes are still in english with subtitles.

DSC02464 DSC02466 DSC02467

DSC02469

And then you get a random ticker at the top with instructions for non-english speakers... Anyway... time to go and play the rest.

Filed under: Retro No Comments
21Mar/182

Amstrad CPC464 Restoration

I was hoping this would be a plug-and-play, but a machine this old was always going to be a challenge. I received this unit as part of a lot with the other 6128s and have finally received a tape to test on it.

DSC02424

DSC02425 DSC02426 DSC02428

From the outside, the item was a little dusty. That white piece, which looks like a pivot of some sort, fell out when I rotated the unit to see underneath. Never a good sign... Either way, I plugged in the unit and power it up (it happily uses the same RGB and power setup as per the 6128). To my surprise, I got straight to the main BASIC screen! To try my luck further, I loaded my demo tape and typed RUN"...

DSC02433

All good so far... then I noticed that only the left spindle was spinning on the tape player. The right wasn't collecting any of the read tape... I had a hunch where it was going......... yep.

DSC02432

Time to pop it open.

DSC02434

Dusty... OK... I can handle that... what I can't handle is a spring (from somewhere?) magnetised to the speaker. The ad-hoc shotty taping-and-soldering was also a little bit of a surprise.

DSC02435

Regardless, looking at the tape player mechanism I quickly found two dead rubber components. The band to the tape counter had perished...

DSC02436

So had the rubber ring that drives the right spindle. This makes perfect sense and explains why the machine tried to consume my tape.

DSC02438

Finding spares

There's a few options online for spare parts. eBay was my first choice and I have the two main belts on the way from Germany. This'll take a while. I actually really only need the band for the tape counter, but it won't hurt to replace the main drive belt also.

The second part is a concern. It's a tight ring and my initial searching has come up with zero results. Might have to head to the hobby shop today and find a car tyre or o-ring. Meanwhile, did someome say o-ring?

Drive 'wheel'

Not having much luck with o-rings, I went to my local hobby store and bought some Fleischmann HS Scale traction tyres (00544001) (actual picture here). I bought 4 in total and just layered them up on the wheel. I was a little worried about alignment as any friction would cause the tape speed to change.

DSC02541

DSC02544

It has seemed to have worked.. but now the main drive belt is slipping. I'm going to assume it's loose and therefore not getting the required amount of traction. More waiting until the next set of spares arrives!

Drive and Counter belts

The set was ordered from eBay and arrived from the UK in good time. As expected, two belts in a bag. Much stronger and more flexible than the belts they were to replace.

DSC02573

There's one screw underneath to remove and then you just slide the belt over the wheels. Make sure you not twist the belt when installing. It's not 'extremely' tight, so it's pretty easy to install.

DSC02574

Read Errors

Back to testing. The tape drive started operating perfectly, so I attempted to load the cassette once more.

DSC02579

Yosh! We're getting somewhere... but then...

DSC02581 DSC02583 DSC02585

Read Error Codes indicate failures whilst reading from tapes. Sometimes this is a dirty head, other times the head is out of alignment. I wiped down the head with an alcohol swab and then started to attempt alignment. Not really knowing what I was doing, I hooked up the audio to 'listen' to the data and twisted the alignment screw until the audio was loudest and clearest.

DSC02591

After a lot of errors, I seemed to have it stable, so I restarted the machine and tried again. It got all the way to Block 11! Then it just wouldn't continue. I hung around until I could make it say 'abba'.

DSC02598

Was the tape dead? All of a sudden I had a hunch it could be the power supply... so I swapped to an old AT power supply... but it didn't seem to be able to provide enough current...

DSC02600

And then I accidently plugged in 12v...

DSC02601

Take your time when playing with old electronics... I've now received the dreaded Grey Screen of Death and that means any of the internal ICs could be toast. I might muck around and try and swap the socketed ones between the 6128... but otherwise... I might have just lost the battle. $%$#%#$%#%.

There's a lot of good information here on over-voltage. Seems I've cooked the lot.

Chips on the board

I'm putting this here in case I ever feel game enough to do a full board chip replacement.

Chip Purpose Quantity Status
AY-3-8912 Sound 1
AMSTRAD 40009 32K ROM; O/S and BASIC 1
74LS145P BCD-to-Decimal Decoder 1
74HC153P Dual 4-input multiplexer 4 Found, not ordered.
HD46505SP Video PPI 1
D8255AC-5 CRTC 1
74HC273P D FLIP-FLOP 1 Found, not ordered.
Z8400AB1 Z80A 4Mhz CPU 1 Found, not ordered.
74HC32P Quad 2-input OR gate 1
74HC244P Octal buffer/line driver; 3-state 1 Found, not ordered.
74HC373P 8-BIT DRIVER 1 Found, not ordered.
M3764-20RS (Or 4614?) RAM 8 Found, not ordered.
74HCU04 Hex unbuffered inverter 1
AMSTRAD 40010/40007 Gate-Array 1
Filed under: Retro 2 Comments