Motorhalterung / Motorbolzen M8 die 2.

Nach 1002 Kilometern mit dem Daytona Motor ist die Saison zu Ende.

Nicht etwa, weil es zu kalt geworden ist, sondern wegen eines Motorbolzenbruchs am hinteren (unteren) Bolzen der den Motor mit dem Rahmen verbindet.

„Jetzt“ reichts endgültig mit dem Scheixx – Intelligent wie ich war hab ich einen 100 mm Bolzen M8 in 10.8er Güte montiert (Länge wie original, aber die hat nur 8.8er Güte).
Wäre der Bolzen nur 10 mm länger, könnte ich den rest mit einer Zange rausdrehen, aber nein – die 10mm wären wohl zu viel nutzloses Gewicht. Ich kann mich nicht errinnern, warum ich die nicht länger genommen hatte.
Dafür fällt mir Siedendheiss ein, der Monteur hat damals den Bolzen dick in rotes Schraubenblut der Firma Loctite getaucht *args* Ich könnt mich würgen !!!
Alternativ hätte ich ja auch die angeschweisste Mutter entfernen können, dann wäre das auch kein Thema..

Nach intensivem suchen, habe ich keine oberflächen Behandelten Schrauben in 12.9er Güte gefunden, also erstmal einen kleinen Sack 10.8er in M8 und M10 bestellt. Aufbohren des Motorgehäuses – damit M10 passt – hab ich ja schonmal hinbekommen. Da war eigentlich genug Fleisch dran – Hoffentlich ist der Anima dort auch so fleischig, wie der Lifan Daytona Nachbau.

Die Schraube ist übrigens (hab die erste noch im Regal) an genu der gleichen Stelle abgerissen. WTF!
Um den Rest rauszukriegen ist entweder die Schwinge oder der Motor im Weg – so komm ich nicht richtig dran.

Jetzt frage ich mich natürlich warum?

Die Gemeinsakeit bei beiden Fällen bei den die Schraube gebrochen ist – die starre Nabe ohne Ruckdämpfer – aber davon gibts doch mehrere !?!

Was sagte neulich ein Schrauber zu mir?
Motor kaputt oder gehts dem Motor so gut, dass er den Rest des Moppeds zerlegt?

Raspberry Pi 3 internen WLAN Adapter abstellen

Ich habe einen RPI 3 mit einem Realtek RTL8192CU 802.11n WLAN Adapter mit externer Stab Antenne der beim einrichten des RPI tadelos lief, aber irgendwann hatte ich nur noch Ärger mit dem Wlan und wußte nicht weiter.
Egal wo und wie ich den Adapter hingestellt hatte, die Verbindung war mies.
Gestern hab ich dann mal das ganze Geraffel aus der Moppedwerkstatt mit in die „Guut Stuub“ genommen, um das System zu sezieren….

Hmmm obwohl der Kasten 1 Meter neben dem Router steht ist die Link Quality nur mit 32 von 70 angegeben und der Signal level lag irgendwo bei 20 von 70?
Moment 70 – hatte der externe Adapter nicht ursprünglich 100 ???

Lange rede kurzer Sinn, obwohl ich den internen WLAN Adapter des RPI3 ausgeschaltet hatte, hat der sich (über ein upgrade?) wieder aktiv gestellt und sich die Einstellungen vom externen Adapter geschnappt.

Also diesmal eine andere Taktik gewählt, um den internen WLAN Adapter auszuknipsen.

Über lsusb meldet der sich als „Bus 001 Device 005: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter
Unter Raspbian GNU/Linux 9 (stretch) meldet er sich als wlxmacaddress.
In der /etc/network/interfaces habe ich nun zusätzlich zum Adapter wlan0 (der interne) diesen Adapter eingebunden und Ihm eine statische Adresse aus meinem Netz gegeben.

/etc/network/interfaces:
auto wlx2cafe4django
allow-hotplug wlx2cafe4django
iface wlx2cafe4django inet dhcp
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid "myssid"
wpa-psk "mypskey"

Nun kommt der Kniff:

/usr/local/bin/wlan0_off.sh

#! /bin/sh

#no internal wlan
sleep 10
lsusb|grep "0bda:8178" && ifdown wlan0

Dieses Script wird über einen Dienst gestartet:

/etc/systemd/system/wlan.service

[Unit]
Description=disable internal wlan
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/wlan0_off.sh

[Install]
WantedBy=multi-user.target

Der Trick (Idee dahinter) ist anstatt den internen WLAN Adapter wie vorher über
blacklist brcmfmac
blacklist brcmutil

zu hart abzuschalten und damit den externen WLAN Adapter zu wlan0 zu machen, diesen im System zu belassen, aber ihn zu deaktivieren, wenn der externe Adapter erkannt wird.

Mal sehen, wie stabil das ganze (upgrade Thematik) bleibt.

Daytona Anima 190FD Part 01.4 „Benötigtes Zubehör“

Anbei die benötigten Teile, die man zusammen mit dem Anima benötigt.

Der Anima hat eine Zündkerze mit 13mm Schlüsselweite – ergo 13 mm Zündkerzenschlüssel.
Luftfilter K&N Durchmesser 89mm –  51mm Höhe – der passt millimeter genau.
Vergasergummi für PWK 33 und den Anima Ansaugstutzen.
(Die drehbare Vergaserplatte braucht man nicht für die PBR/ZB)
Kupplungszug – hier gilt aufpassen und messen!
Der verwendete Kupplungshebel und evtl. nachgerüsteter Kupplungszughalter aus Alu mit 8mm Gewinde – machen einen Unterschied.
Kickstarter – der Anima hat einen anderen Durchmesser als die „kleineren“ Motoren.
Ölkühler!

Wenn nicht bereits vorhanden – ein „ordentlicher“ Auspuff, meinen Faddybike habe ich Krümmerseitig geändert (keine Verjüngung direkt am Zylinderkopf, DB Eater „speciale“)

Daytona Anima 190FD Part 01.2 „Montageprobe“

Anima PBR Montageprobe_small
Anima PBR Montageprobe

Der Anima passt mit etwas Feilenfett in den Rahmen, soweit sogut.

Wegen dem breit und tiefen Kupplungsgehäuse muß an der unteren rechten Motorhalterung am Rahmen etwas abgenommen werden. Auf der linken Seite ist die Entlüfterschlauchbefestigung im Weg.

PBR Motorhalterung unten rechts unbearbeitet
PBR Motorhalterung unten rechts unbearbeitet

Der Kupplungsarm muß so tief wie irgendwie möglich gesetzt werden, damit passt aber die Sicherungsschraube nicht (ist dann unterhalb der dafür vorgesehenen Nut).

Anima Kupplungsarm
Anima Kupplungsarm „innenansicht“
Anima Kupplungsarm Aussenansicht
Anima Kupplungsarm Aussenansicht

Auf jeden Fall muß der Rahmen rund um die Motorhalterungen verstärkt werden, bei meinem haben die 62 mm Hub des Vorgänger Motors deutliche Spuren der Überlastung hinterlassen – und das war ein dynamisch gewuchteter zweiventiler.

Dem Anima traue ich schon im unveränderten Zustand einiges an Mehrleistung (Drehmoment/Drehzahl).
Das verkraftet der Rahmen nicht im unveränderten Zustand.

Anima Faddybike Exhaust
Keihin PWK 33 mit K&N

Auch wenn der Vorgängermotor schon wuchtig ausgesehen hat, im direkten Vergleich zum Anima ist er zierlich.
Allein der Durchmesser des Entlüftungsschlauchs läßt mich an einen Spruch von einem gewissen Walter R. aus Regensburg denken „Ein Auto ist erst dann schnell genug, wenn man morgens davor steht und Angst hat es aufzuschließen.

Daytona Anima 190FD Part 01.1 „Lieferung“

Am Montag ist die Lieferung angekommen und heute hatte ich die Zeit für den zweiten Blick.

Der Lichtmaschinendeckel vom Anima sieht sehr gewöhnungsbedürftig aus, ist aber ordentlich gefertigt.
Glücklicherweise hat der Motor diverse Sacklöcher, um den (oder andere) Deckel zu befestigen.
Diese sind in meinem Fall aber nicht nötig, denn der zum PBR/ZB Rahmen passende Lifan 150 Deckel passt auch auf den Motor.

Der Zylinderkopf bietet zudem auch zwei Varianten an, den Ansaugstutzen zu montieren, einmal mittig und einmal nach links zeigend. Der Ansaugstutzen passt samt PWK 33 „saugend“ in den Rahmen.
Möglicherweise braucht man den drehbaren Ansaugstutzenadapter dann nicht, wobei der PWK 30 sehr wenig Abstand zum Motor hat und der Adapter dann als „Spacer“ nützlich werden kann. Nachtrag – im Gegenteil der drehbare Ansaugstutzen verhindert sogar die Montage (Vergaser bzw. Gaszug ist zu knapp am Tank)

Typischerweise sind die Übergänge zwischen den einzelnen Bauteilen des Ansaugsystems sehr kantig – die Packung Ellenbogenschmiere ist ja glücklicherweise immer am Mann.

Ansonsten sieht alles gut verarbeitet aus und es wird spannend.

Der Motor wird mit einem Hilfskabelbaum und allen elektrisch benötigen Teilen geliefert, es ist also kein Umbau der Elektrik erforderlich.
Lediglich die 12V Ladespannung an die Batterie klemmen und der Ausschaltkontakt des Zündschlosses kommt an die CDI. Nur noch die Masse an den Rahmen und den Ausgang des Neutralschalters an die dazugehörige Lampe – voila das war dann die komplette Abteilung Elektrik „ohne Trick“.

Morgen kommt der alte Motor raus und eine Schablone gefertigt, um die Motoraufnahmen zu verstärken.
Die sind ja bei meinem Rahmen bereits stark in Mitleidenschaft gezogen worden.

Fazit: Anima in PBR/ZB ist machbar, jedoch sollte jeder – der den Umbau plant – sich im Vorfeld über die Motorhalterungen Gedanken machen.
Diese haben sich (in meinem Fall) mit starrem Kettenblatt und 62 mm Hub nach ~ 4.000 Km bereits als unterdimensioniert herausgestellt und zumindestens ein Halter (der obere in Fahrtrichtung links) wird nur noch von einer kleinen Schweissnaht festgehalten.

bpmcounter.sh Beats per minute

Meine Audiodateien liegen auf einem Debian System und ich stand vor der Thematik das TBPM Tag meiner mp3 Dateien zu pflegen.

Nach längerer Recherche bin ich auf das Paket bpm-tools gestossen, mit dem das zählen der Beats sehr gut funktioniert.

Es würde diesen Beitrag nicht geben, wenn auch das schreiben der Tags funktionieren würde.

bpm-tag hat bei meinen Dateien (idv2.3/2.4) nicht nur das TBPM Feld beschrieben, sondern die Inhalte aller anderen (Ausnahme APIC) Tags gelöscht.

Daher der gute Rat – wer das script nutzen möchte – probiert vorher mit Kopien und nicht mit den einzigen originalen, ob es Nebenwirkungen gibt.

Die Problematik mit den gelöschten Feldern und der Tatsache, dass bpm-tag (nicht der spezifikation entsprechend) kommawerte in die Tags schreibt habe ich also mit dem folgenden Script/wrapper gelöst.

Aus den anderen Beiträgen weiß ich um die Problematik der Zeilenumbrüche – daher das Script als gezipter Anhang.

Folgende Pakete werden (mindestens) vorausgesetzt:


python
eyeD3
sudo apt-get install sox
sudo apt-get install lame
sudo apt-get install libsox-fmt-mp3
sudo apt-get install bpm-tools

Auch wenn es anders in der Hilfe von bpm-tag beschrieben ist – die beiden Schalter bpm-tag -f -n sind nötig, damit bpm-tag nur die bpm zählt und nicht in den Tag schreibt.

Da das zählen etwas Zeitaufwendig ist, wird zuerst mittels eyeD3 nachgesehen, ob das TBPM Feld beschrieben ist, bevor die bpm gezählt werden.
EyeD3 nutze ich (und damit der Wrapper/ das Script) auch zum schreiben der Tags.

Das Script geht rekursiv durch alle Unterordner.
Wem das Script gefällt, sollte den untenstehenden Anhang benutzen und nicht via copy & paste die Zeilen übernehmen, da alle Browser die Zeilen parsen und verarbeiten.


#!/bin/bash

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
VERSION=0.1

if (( $# < 1 )) ; then
cd "$1"
fi

header() {
# echo ----------------------------------------------------------
echo bpm.sh - adding bpm tag, version $VERSION
echo ----------------------------------------------------------
echo -ne "\n"
}

check_bpm-tools() {
local bpmtagok=$(which bpm-tag)
if [ -z "$bpmtagok" ]; then
echo "you need bpm-tag to run this script"
echo "apt-get install bpm-tools"
exit 1
fi
# checking for eyeD3 ...
local eyed3ok=$(which eyeD3)

if [ -z "$eyed3ok" ]; then
echo "you need eyeD3 (http://eyed3.nicfit.net/) to run this script"
exit 1
fi
}
echo " all tools found."

header
while [ "$1" ]; do
case $1 in
-v) exit 0;;
-c) check_bpm-tools; exit 0;;
-i) cover_img; exit 0;;
esac
shift
done

for d in */ ; do
echo cleaning up $d
cd "$d"
for file in $(find -iname '*.mp3' | sort); do
echo checking "$file"
bpmset=$(eyeD3 "$file" |grep BPM |cut -f2 -d':'|cut -f2 -d ' ')
if [ -z "$bpmset" ]; then
echo -n "no bpm tag "
bpm=$(bpm-tag -f -n "$file" 2>&1 | cut -f2 -d':' | cut -f1 -d '.')
echo "- set bpm to$bpm"
eyeD3 --preserve-file-times "$file" --bpm=$bpm &> /dev/null
else
echo bpm tag is set to $bpmset
fi
echo -ne "\n"
done
cd ..
done
IFS=$SAVEIFS

bpmcounter.sh

Playercheck.sh

Triodes Squeeliteplayer hat ein kleineres Problem, wenn längere Zeit kein Stream gesendet wird. Daher habe ich diesen Workaround geschrieben, der mittels netcat-traditional den LMS Server ausliesst und die Player bei Bedarf ausschaltet.

Werden danach Tracks an den Player gesendet, schaltet dieser sich automatisch wieder ein (LMS standard).

  • chmod +x nicht vergessen 😉

Leider werden die Einrückungen (Tabs) aus dem Script hier nicht übernommen 🙁


#!/bin/bash
## check if any player is playing
## and restart squeezelite if timetoplay is equal on both checks
##vars
port=9090
server=localhost

# use a fresh logfile
mv /tmp/playercheck.log /tmp/playercheck.txt
echo "$(date)">/tmp/playercheck.log
sensors|grep 'Core 0' |awk '{print $3}'|cut -b2,3,4,5,7>>/tmp/playercheck.log

# get number of known players
players=$(printf "player count ?\nexit\n" | nc $server $port | cut -d ' ' -f 3)

## check all known players
for((i=0; i<$players; i++))
do
playerID=$(printf "player id $i ?\nexit\n" | nc $server $port | cut -d ' ' -f 4 | sed 's/%/%%/g')
playermodel=$(printf "player model $i ? \nexit\n" | nc 127.0.0.1 9090 |cut -d ' ' -f 3)

if [ !$playermodel = squeezelite ]
   then
echo Player Nr. $i is not a squeezelite Session>>/tmp/playercheck.log
else
playername=$(printf "$playerID name ?\nexit\n" | nc $server $port | cut -d ' ' -f 3)
playermode=$(printf "$playerID mode ? \nexit\n" | nc 127.0.0.1 9090 |cut -d ' ' -f 3)
if [ $playermode = pause ]
then
grep $playername:$playermode /tmp/playercheck.txt && printf "$playerID power 0 \nexit\n" | nc $server $port
echo $playername:$playermode>>/tmp/playercheck.log
else
timetoplay1=$(printf "$playerID time ?\nexit\n" | nc $server $port | cut -d ' ' -f 3)
echo "$playername:Playtime:$timetoplay1">>/tmp/playercheck.log
timetoplay2=$(printf "$playerID time ?\nexit\n" | nc $server $port | cut -d ' ' -f 3)
if [ $timetoplay1 = $timetoplay2 ]
then
echo no difference between 1st and 2.nd check
timetoplay3=$(printf "$playerID time ?\nexit\n" | nc $server $port | cut -d ' ' -f 3)
if [ $timetoplay1 = $timetoplay3 ]
then
printf "$playerID power 0 \nexit\n" | nc $server $port
fi
else
echo "$playername is playing nothing 2do 4me">>/tmp/playercheck.log
fi
fi
fi
done

Raspi und Edimax EW-7811Un

Beim Versuch einen  Edimax EW-7811Un mit dem Pi zu verheiraten hab ich „mal eben“ 4 Stunden verballert..
Hatte ich via eth0 eine Verbindung zum Router, funktionierte auch das Wlan?
Dabei hatte ich dann so vielsagende Meldungen wie: „ifup wlan0 ioctl[SIOCSIWAP]: Operation not permitted“ bekommen.

Die dazugehörige /etc/network/interfaces sieht so aus:

## loopback
auto lo
iface lo inet loopback

## wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid "Acesspoint ssid"
wpa-psk "passphraseimklartext"
dns-nameservers ip.des.routers

## eth0
iface eth0 inet dhcp

Also bis auf das Wlan0 zuerst, dann eth0 eigentlich ganz normal – trotzdem lief es erst nach Trick 17.
Zwei Scripte lösten das ganze Problem. Auch wenn der Edimax sich mit ID 7392:7811 meldet, diesmal keine udev Regel.

joe /etc/network/if-down.d/start.wlan
#!/bin/sh
# lo is configured aint nobody got time for that
[ "$IFACE" = lo ] && exit 0

# Only run from ifdown
[ "$MODE" != stop ] && exit 0

# start wlan0 interface
/sbin/ifup wlan0
exit 0

Nicht vergessen – das Script muss auch ausführbar sein.

chmod +x /etc/network/if-down.d/start.wlan

Und noch eines für den anderen Fall:
joe /etc/network/if-up.d/stop.wlan
#!/bin/sh
# lo is configured aint nobody got time for that
[ "$IFACE" = lo ] && exit 0
# Only run from ifup
[ "$MODE" != start ] && exit 0
# stop wlan0 interface
/sbin/ifdown wlan0
exit 0

chmod +x/etc/network/if-up.d/stop.wlan

squeezelitechecker.sh

Ich benutze squeezelite unter Debian und hab (bin wohl nicht ganz alleine damit) ein paar Probleme, wenn squeezelite ein paar minuten/Stunden nur auf einen Stream wartet und nichts abspielt.

Dann stürzt es einfach ab.

Dieses Script war im Betastatus, die elegantere Variante findet sich Hier
und auch im slimdevices Forum

Rasbpi meets Mini

„meine“ beiden Hobbys auf einem BildTisch 🙂

Der Raspberry Pi ist der „innoffizielle Nachfolger“ des Sinclair ZX81, so einen hatte ich (als Bausatz) in ganz jungen Jahren – der Modellmini steht stellvertretend für meine beiden großen, die ich knapp ein Jahrzehnt später gekauft, restauriert/modifiziert und immer noch im Besitz habe. Aber warum sind die nun zusammen auf einem Bild?

Ein Pi und ein Modellmini
Ein Pi und ein Modellmini

Ganz einfach, wurde der ZX-81 Bausatz mit einem Gehäuse ausgeliefert, der Pi kommt „ohne“….

hobbys_fitting_test
Ein Pi in einem Modellmini

Wenn sich die beiden im echten Leben nicht vertragen (ok – der Mini hat seit ~20 Jahren eine optoelektronische Zündung) als Miniaturen vertragen sich die beiden als Modelle ganz gut.

sitz passt wackelt (nicht) und hat Luft
sitz passt wackelt (nicht) und hat Luft

Ein erster Funktionstest – noch ohne Seiten & Heckscheibe – funktionierte ganz gut.
Ich brauche „nur“ noch einen Wlanstick mit Antenne, denn die Mini Karosse ist aus Zink – da kommt nicht viel rein/raus.

Leider ist die Heckklappe (Zugang für das externe Handschuhfach beim echten Mini) hier nur angedeutet, da werde ich wohl  einen Abdruck des Hecks machen, die Klappe im Mini aussägen und falls ich zu viel feilen muß (und damit englische Spaltmasse herauskommen) wohl nachbauen um sowohl an die USB Ports zu kommen ohne das dass Modell zu sehr darunter leiden muss.

In wie weit ich das Interieur verändern muß um es wieder montieren zu können, muss ich noch herausfinden.
Nachtrag: Der Pi hatte nach Feindkontakt mit einem Blödkolben nur noch seine USB Buchse. Bis auf die beiden herausgeführten Kabel ist der Modellmini unscheinbar geblieben und hat sein Interieur behalten 😉
ein paar Glasfasern (überbleibsel von der Neuverkabelung meines Arbeitgebers) hab ich schon gekürzt und damit werden die LEDs vom Pi an üblichen Stellen wie Blinker herausgeführt. Die LEDs leuchten zu schwach um die
Blinker anzusteuern (ohne LAN blinkt er eh nicht mehr)

Der Pi läuft Headless (nur via putty) und über udev Regeln.
Steckt ein DAC drin startet squeezelite, ein Softwareplayer für den Logitechmediaserver.
Ist eine Webcam mit Ihm verbunden, startet mjpg-streamer.
Die Webcam (eine Logitech C210) wird noch zerlegt, bekommt einen Schalter an die +5V Strecke und die Optik wird anstelle eines Hauptscheinwerfers montiert, denn Haupteinsatz des kleinen Rackers ist die Heimautomation, nicht die überwachung unserer Bude oder der Bewohner.

Das ist eine der udev regeln: (Logitech C210 Webcam) Bitte daran denken, dass sind zwei Zeilen, die jeweils mit ACTION beginnen und müssen auch (eine Befehlskette – eine Zeile) so übernomen werden.

/etc/udev/rules.d/70-usb-cam.rules
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="0819", RUN+="/usr/local/bin/mjpg-streamer.sh start"
ACTION=="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="0819", RUN+="/usr/local/bin/mjpg-streamer.sh stop"