Ding, Dong

The helium-based blood preserve as well as the digital spinal cord (IR transmitter) of Frankenshark just arrived by courier …

20180628_081655

Advertisements

Decoding a Shark`s nervous system

So, time for a little calibration experiment. Flying shark is remotely controlled via infrared, so the best guess is via ordinary IR codes. Hence, I’ve setup a digital IR receiver on the breadboard and used the well-known IRRemote library to log/monitor the received readings via the serial port.

20180623_162516

An this is how Frankenshark`s motoric capabilities read over the wire:

// bootstrap for pairing & intermediate connect
// IR_Code: 444AD90D, Bits: 32
// IR_Code: 444AD90D, Bits: 32
// IR_Code: 444AD90D, Bits: 32
// IR_Code: 444AD90D, Bits: 32
// IR_Code: 444AD90D, Bits: 32
// IR_Code: 444AD90D, Bits: 32

// left flap
// IR_Code: 77CCE159, Bits: 32

// right flap
// IR_Code: 1DCF2C27, Bits: 32

// dive/nose down
// IR_Code: EF1AF1FB, Bits: 32

// climb/nose up
// IR_Code: 5F5B64A8, Bits: 32

// demo mode
// IR_Code: 6FECA321, Bits: 32

Next, I need to order an IR sender and bloody helium …

 

Successfully importing 1.9er VirtualBox Machines into a 1.14 environment

A lot of prebuilt images on virtualboxes.org are still submitted in older formats.

If trying to import the machine.xml (which is in current versions called machine.vbox), you will be presented with the error message that the referred machine.vdi file (which is currently co-located to the vbox file) cannot be found in the media registry.

This is because in versions >=1.14, the media must be either centrally known in the VirtualBox.xml settings file (via the media manager) or locally to the vbox file (which is then automatically added and removed from the media manager). Manually adding the VDI to the media manager does not always work.

So you could manipulate the .vbox file by yourself:

Old 1.9 version looks like this, please note that you will see the UUID of the VDI that needs to be registered in the tag AttachedDevice.

<?xml version="1.0"?>
<!--
** DO NOT EDIT THIS FILE.
** If you make changes to this file while any VirtualBox related application
** is running, your changes will be overwritten later, without taking effect.
** Use VBoxManage or the VirtualBox Manager GUI to make changes.
-->
<VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.9-macosx">
 <Machine uuid="{77f238d7-c16d-4082-8782-f542910ab1b3}" name="opensuse-11.2-x86" OSType="OpenSUSE" snapshotFolder="Snapshots" lastStateChange="2014-11-07T08:37:02Z">
 <ExtraData>
 ...
 </ExtraData>
 <StorageControllers>
 <StorageController name="Controller IDE" type="PIIX4" PortCount="2" useHostIOCache="true" Bootable="true">
 <AttachedDevice type="HardDisk" port="0" device="0">
 <Image uuid="{81e5deb2-a60f-4525-b219-858b5aefb54e}"/>
 </AttachedDevice>
 ...
 </StorageController>
 </StorageControllers>
 </Machine>
</VirtualBox>

And the manipulated 1.14 fake that can be successfully imported then looks like this:

<?xml version="1.0"?>
<!--
** DO NOT EDIT THIS FILE.
** If you make changes to this file while any VirtualBox related application
** is running, your changes will be overwritten later, without taking effect.
** Use VBoxManage or the VirtualBox Manager GUI to make changes.
-->
<VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.14-windows">
 <Machine uuid="{77f238d7-c16d-4082-8782-f542910ab1b3}" name="opensuse-11.2-x86" OSType="OpenSUSE" snapshotFolder="Snapshots" lastStateChange="2014-11-07T08:37:02Z">
 <MediaRegistry>
 <HardDisks>
 <HardDisk uuid="{81e5deb2-a60f-4525-b219-858b5aefb54e}" location="opensuse-11.2-x86.vdi" format="VDI" type="Normal"/>
 </HardDisks>
 <DVDImages/>
 <FloppyImages/>
 </MediaRegistry>
 ...
 </Machine>
</VirtualBox>

That’s all folks!

Bowdenzug an der FahrertĂŒr des Skoda Oktavia tauschen

Endlich mal wieder ein erfolgreiches Wochenendprojekt 😉

Auf dem !!Nachhauseweg vom  TĂŒV!! machte es vor Weihnachten beim Aussteigen plötzlich “ratsch”. Die FahrertĂŒr ließ sich nicht mehr von innen öffnen – zumindestens nicht auf wĂŒrdige Art und Weise und ohne eine lĂ€chelnde Zuschauerschaft auf dem Discounter-Parkplatz.

Bei der ersten Analyse fiel dann aus der Innenverkleidung sofort ein kleiner Haken mit einem Drahtrest raus, der darauf schliessen ließ, dass es sich dabei um die abgerissene Befestigung des Bowdenzugs handelte.

Bei Ebay wird man schnell fĂŒndig, wenngleich es kein Überangebot an solchen Ersatzteilen gibt. Der Austausch war dann etwas fuddelig, aber selbst mit begrenztem handwerklichen Talent ohne grössere KollateralschĂ€den durchfĂŒhrbar:

  1. Innenverkleidung des Aussenspiegels mit flacher Klinge zart lockern und abheben. Stecker lösen.
  2. Steuerung des Aussenspiegels am Innenöffner mit flacher Klinge zart lockern und heraushebeln. Stecker lösen. Kleine Schraube hinter dem Innenöffner lösen.
  3. Hintere Plastikverschalung am inneren TĂŒrgriff leicht in Richtung AutotĂŒr abwechselnd links und rechts hebeln und abziehen. Dadurch wird nun auch der Rest der Bedienkonsole frei, die man dann nach oben und vorne herausnehmen kann. Stecker abziehen.
  4. Jetzt die 8 Torque-Schrauben an Stirnseite (2 StĂŒck), Fussseite (2 StĂŒck) und unten (3 StĂŒck) lösen.
  5. Schliesslich die drei wesentlichen Kreuz-Schrauben in der verbliebenen Bedienkonsole lösen. Damit wird die Innenverkleidung nun frei.
  6. Wer die Innenverkleidung nicht komplett abreissen will, kann sie nun anheben und mit einem StÀnder, Stuhl o.À. einfach hochgeklappt lassen, um darunter zu arbeiten.
  7. Jetzt die Isolierfolie den alten Bowdenzug und ein paar Zentimeter am linken Schloß entlang mit einem scharfen Messer aufschneiden,  und aufklappen. Die Folie wird noch gebraucht, daher Vorsicht.
  8. Zwei Torque-Schrauben an der Stirnseite, die das Schloß halten, lösen.
  9. Das Schloß muss man nun nach rechts in Richtung der TĂŒröffnung drĂŒcken, bis die AufhĂ€ngung des Bowdenzugs sichtbar wird. Den alten Bowdenzug aus den Halterungen lösen und senkrecht nach unten halten, damit er aus der AufhĂ€ngung gezogen werden kann. Sollte das Schloß nicht genĂŒgend Spiel haben, kann man die Schraube des davor angebrachten Querblechs auch lockern.
  10. Selbes Spiel beim Einbau des neuen Bowdenzugs: Senkrecht halten, in die AufhÀngung einfÀdeln, dann in Zielposition bringen und wieder festhaken!
  11. Alles in umgekehrter Reihenfolge wieder zusammenbauen, Folie an der Schnittnaht wieder sauber zusammenkleben, da sonst Kondenswasser eintreten kann.

Trading ORA-30926 for ORA-08006

Trading ORA-30926 for ORA-08006

This one has bitten me this morning when violating against golden rule #3 (‘Never change two not completely predictable things at a common target simultaneously at least unless you are in hazardous mood.’ An even more popular exemplification of that rule would be the slogan ‘Don’t drink & drive.’).

So I changed

  • the semantics of one source table of a merge statement (extract individual phrases out of a text field into multiple rows)
  • the partitioning of the target table (including the enablement row movement)

The result of the former change alone should have produced an ORA-30926 (‘unable to get a stable set of rows’) when some … hmm, say humanoid at least … managed to restate the same phrase over and over again in the source system.

In conjunction with row movement, however, the merge statement will instead issue an ORA-08006 (‘Someone deleted that row. It wasn’t me.’) which leaves one puzzled until one manages to find Todor Botevs helpful investigation.