WriteFreely

Reader

Read the latest posts from WriteFreely.

from Gedankenwuschel

Mit dem Vater hatte ich vorherige Woche ein interessantes Gespräch zum Thema Führung und Verantwortung in Verwaltungen. Ich hatte bei ihm die Problematik bei mir im Büro mit der Vorgesetzten und deren Vorgesetzte angesprochen und wie es mir aktuell damit geht.

Er sprach mir aus dem Herzen, als er die Problematik der zu verzweigten Hierarchie ansprach. Es gäbe in der Verwaltung einfach zu viele Entscheidungsebenen. Zu viele Menschen, denen eine Führungsrolle gegeben wird, unabhängig davon, ob sie die Eignung für diese Tätigkeit haben.

Oft werde Menschen ohne Eignung Führungsverantwortung gegeben, um sie in eine höhere Gehaltsstufe eingruppieren zu können. Dadurch entstehe die Problematik, dass diese dann auch überall und immer entscheiden wollen. Der einzelnen Mitarbeiterin werde dadurch Verantwortung und eigenverantwortliches Handeln abtrainiert und entzogen.

Bei den Mitarbeiterinnen entstehe dadurch Gefühl, weniger wertvoll und wirksam zu sein. Sie seien gewissermaßen nur Ausführungsgehilfen ihrer Vorgesetzten, die alles von ihnen absegnen lassen müssen. Die Vorgesetzten wollen alles sehen und mitentscheiden.

Eine aufgebauschte Bürokratie und persönliche Seltsamkeiten der Vorgesetzten würde die psychische Belastung noch weiter steigern. Das führe zu belasteten, wenig mitdenkenden und unzufriedenen Mitarbeiterinnen.

Was könnte helfen?

  • Führungsebenen einsparen
  • mehr Entscheidungsspielraum für die Mitarbeiterinnen
  • mehr Verantwortung in die Hände der Mitarbeiterinnen
  • Abbau von Bürokratie und der Kultur des „absegnen lassen“, in einem gewissen Rahmen
  • Wert auf sinnvolle Tätigkeiten legen im Sinne des Unternehmens, der Kundschaft und der Umwelt
  • Machtstrukturen auflösen
  • Mitbestimmung durch Mitarbeiterinnen
  • Bezahlungs- und Honorierungssystem optimieren (Beispiel New Work)

#Vater #Verwaltung #Führung #Chefin #Arbeit #Kultur

 
Weiterlesen...

from Gedankenwuschel

Ich habe für mich erkannt, dass ich ruhiger werden und meine allgemeine Belastung senken möchte. Letztlich möchte ich Dinge sein lassen, die mir nicht so am Herz liegen oder die mich nicht mit Freude erfüllen. Mit ruhiger werden, meine ich, mich nicht bei allen guten Ideen und Initiativen mich einbringen und etwas bewegen zu wollen.

Die einzelnen Dinge jedoch auszuwählen, abzuwägen und wirklich abzulegen fällt mir schwer. Hier hilft die Frage an mich selbst: Ist das auch noch wichtig, wenn Du 10 oder 20 Jahre in die Zukunft denkst? Am Arbeitsplatz heißt das, die Zusatzverantwortung und -ämter abzulegen.

Weiterhin habe ich mit einer Psychologin gemeinsam Maßnahmen für den Arbeitsplatz erarbeitet, um dort für mich anders mit der Belastung und die Übergriffe durch die Vorgesetzte umzugehen.

Die Arbeit im Großraumbüro ist durch den Lärm und die Ablenkung sehr belastend für mich. Wie belastend der Arbeitsumgebung ist, habe ich in der Urlaubszeit meiner Vorgesetzten bemerkt. Denn auch ohne Vorgesetzte habe ich mich belastet und erschöpft gefühlt.

Ursachen sind neben dem Großraumbüro unnötiger Aufwand durch Bürokratie, „das haben wir schon immer so gemacht“, mangelnde Organisation und Konflikte untereinander.

Hier kann ein zweiter Tag Homeoffice hilfreich sein. Weiterhin könnte ich meine Arbeitszeit (teilweise) auf den Nachmittag legen. Zu dieser Zeit sind nicht so viele Menschen im Großraumbüro.

Der Vorgesetzten ist wichtig, die Kontrolle zu behalten, informiert zu bleiben und als Chefin anerkannt zu werden. Hierfür können die folgenden Maßnahmen meinerseits helfen, ihre Bedürfnisse zu sichern:

  • Den Anweisungen der Vorgesetzten Folge leisten und ihr die Sicherheit geben, dass sie das Sagen hat.
  • Sich selbst prüfen. Die Kämpfe weise wählen. Wo lohnt es sich zu kämpfen? Für alle habe ich nicht genügend Kraft und Zeit.
  • Ideen und Verbesserungen notieren für die Zeit danach.
  • Vorgesetzte beruhigen. Sie ist die Chefin. Ich bin Dein Mitarbeiter. Wenn Du das so möchtest, machen wir das so. Auch wenn ich das anders machen würde.
  • Sie penibel informieren, woran ich gerade arbeite und hänge. Eher zu viele Informationen, bis es ihr zu den Ohren heraushängt.
  • Informationsfluss klären. Wie möchtest Du es gerne haben? Dann schriftlich festhalten und von ihr abzeichnen lassen. Als Vorschlag aufschreiben und von ihr absegnen lassen.
 
Weiterlesen...

from HDValentin

und leider auch nur das.

Einige Flugblätter schauen aus einem kleinen Mülleimer heraus. Sie rufen dazu auf den Glasfaseranschluss zu beantragen

Tl;dr: Bedauerlicherweise ist der Anschluss keineswegs verfügbar. Die städtische Wohnungsbaugesellschaft verweigert diesen.

Es geht mir in diesem Beitrag darum, die Mißsituation der Mieterinnen aufzuzeigen, den Unsinn und den Ablauf zu dokumentieren. Ziel ist, das Problem aus der Welt zu schaffen.

Vorgeschichte

Im vergangenen Jahr wurden in der nächsten Querstraße die Gehwege aufgerissen, Glasfaser verlegt und weitere Schaltschränke gesetzt. Die Entfernung des neuen Schaltschranks bis zur Haustüre des Wohnhauses beträgt 93 Meter.

Vergangene Woche habe ich sowohl eine E-Mail, als auch ein Flugblatt von der Telekom im Postkasten gefunden. Darin stand der Aufruf, sich nun für den Breitbandanschluss via Glasfaser anzumelden:

„Voraussichtlich erfolgt der Glasfaser-Ausbau von Heidelberg im Zeitraum vom 01.02.2023 bis zum 31.12.2023.“ „Beauftragen Sie jetzt Ihren Glasfaser-Hausanschluss für 0 €* und sparen Sie die Anschlussgebühr in Höhe von 799,95 €!“.

Der Anbieter 1und1 wirbt aktuell ebenso mit großen Plakaten in Handschuhsheim für das Internet via Glasfaser:

Werbung von 1und1 zur Bestellung eines Glasfaseranschlusses

Kleingedrucktes: „* Glasfaser in vielen Regionen möglich. Sofern keine Glasfaserleitung vorhanden ist, Ausbau und Eigentümergenehmigung erforderlich. Aktion: Baumaßnahmen aktuell kostenfrei. Keine Baukosten, bis zur Glasfaserdose nach dem Hausübergabepunkt. Je nach Wohnsituation sind ggf. Leitungswege durch den Eigentümer vorzubereiten. [...]“ 1und1.de/heidelberg

Kosten bei Abschluss eines Glasfaseranschlusses

Welche Kosten fallen für Mieterinnen bei Beauftragung an?

Die Bereitstellungskosten für Neuanschluss betragen, bei der Telekom einmalig 69,95 €. Dazu kommen noch Kosten für ein Modem oder einen glasfasertauglichen Router, Versandkosten und die Gebühren für den entsprechenden Tarif.

Gegenwärtig gibt es Tarife für monatlich 44,95 € bis 79,95 €. Die Mindestvertragslaufzeit liegt bei 24 Monaten. Die ersten sechs Monate werden vergünstigt berechnet.

Du bist hier nicht auf die Telekom beschränkt. Andere Anbieter, wie 1und1, Vodafone und O2 bieten ebenso Glasfasertarife und Anschlüsse an. Hier lohnt eventuell vorab ein Vergleich der Tarife und Kosten.

Glasfaser in drei E-Mails

  1. Ich habe mich nach der Aufforderung und der Prüfung der Adresse auf Verfügbarkeit direkt angemeldet. Es kam sofort eine Bestätigung, dass bis Ende 2023 der Ausbau erfolgen soll.

  2. Drei Tage später bekam ich eine Mitteilung, dass sich der Ausbau verzögert: „Unser Ausbaupartner vor Ort hat uns mitgeteilt, dass sich die Fortsetzung des Ausbaus aufgrund externer Einflüsse verzögert. Wir melden uns bei Ihnen, sobald der Ausbau fortgesetzt werden kann.“

  3. Wieder drei Tage später wurde der Auftrag storniert: „Leider kann das Gebäude vorerst nicht an das Glasfaser-Netz angeschlossen werden. Der Eigentümer des Gebäudes stimmt dem Glasfaser-Ausbau nicht zu.“

Meine Vermieterin ist eine städtische Wohnungsbaugesellschaft. Die Gesellschaft für Grund und Hausbesitz (GGH) ist ein Tochterunternehmen der Stadt Heidelberg, welche sich für den Breitband-Ausbau in Heidelberg einsetzt.

Genau genommen konterkariert die Ablehnung der GGH die Bemühungen der Stadtverwaltung und die Ausgaben für die Bürgerinnen und Bürger.

Nach Gesprächen mit Nachbarn in anderen Häusern der Straße, stellte sich heraus, dass dies noch viele weitere Häuser der GGH im Stadtgebiet betrifft.

Für meine Nachbarinnen und mich ist das völlig unverständlich.

Vermutlich beruft sich die GGH darauf, dass in den Wohnungen schon ein Breitbandanschluss über das Fernsehkabel liegt. Leider ist dies kein zukunftsfähiger Anschluss, da hier auch nur Kupferkabel verbaut wurden.

„Breitbandsituation“ in meiner Mietwohnung

Kabelanbieter nicht frei wählbar

In den Häusern der GGH gibt es einen Vertrag mit der Firma Pÿur. Diese bietet über das Fernsehkabel (Koaxial) einen Anschluss mit derzeit maximal 400 Mbit Geschwindigkeit an.

Die Wahl des Anbieters ist hier verpflichtend bei Pÿur.

Eigene Erfahrungen, in der Vergangenheit haben gezeigt, dass die Kundenhotline und der -service förmlich nicht existent sind.

Ich hatte in zwei Jahren vier Komplettausfälle über mehrere Tage. Die Hotline war jeweils nicht erreichbar und das Kontaktformular auf deren Website nicht versendbar.

Aktuell verspricht die Anbieterin, auf ihrer Website, eine Verbesserung des Kundenservice. Daher kann sich das heute gebessert haben.

Alternative über DSL

Als Alternative mit freier Anbieterwahl gibt es den normalen DSL-Anschluss (Kupfer). Hier ist für das Wohnhaus, in dem ich wohne, maximal 16 Mbit buchbar.

Es kommen jedoch nur 8 Mbit beim Router an. Dies ist also nicht nutzbar unter heutigen Geschwindigkeitsanforderungen eines Heimarbeitsplatzes.

Welche Möglichkeiten bestehen nun

Aus Erfahrungen in der Vergangenheit bewegt sich die Wohnungsbaugesellschaft nur, wenn Druck von außen/oben kommt oder die Arbeitsbelastung aufgrund der Anfragen der Mieterinnen unerträglich wird.

Daraus ergeben sich logisch die folgenden Möglichkeiten für Mieterinnen. (Dies ist kein Aufruf dazu tätig zu werden. Es ist eine Auflistung der Möglichkeiten):

  • Antrag auf Glasfaseranschluss bei einem der Telekomanbieter stellen.
  • Kontakt mit der GGH aufnehmen und den Grund für die Ablehnung erfragen.
  • Um Unterstützung bitten:
    • bei Gemeinderäten und dem Bezirksbeirat,
    • bei Bürgermeistern und Politikern,
    • bei den hiesigen Medien.
  • Problem ignorieren.
  • Sich ärgern.
  • In eine andere Wohnung umziehen.
 
Weiterlesen...

from Pelzvieh

Wie schon geschrieben, mein #BananaPi M2 Zero konnte ja nicht mit dem DHT11-Kernelmodul den angeschlossenen Sensor auslesen. Von rund 80 erwarteten Flanken lösten gerade immer knapp 20 einen IRQ aus. Ich habe auch schon Workarounds durch Polling im Userspace und eine polling-Version des DHT11-Kernelmoduls vorgestellt. Die gute Nachricht: der Mist kann weg!

Diskussionen mit den Kernel-Entwicklern

Fruchtbare Anstöße gab es, als ich versucht habe, den Polling-Driver in den Kernel zu bekommen. Das dürfe eigentlich gar nicht nötig sein, nicht bei diesem Board, hieß es. Es müsse ein Problem mit meinem Setup geben. Nun, zum Glück ist das Setup ja aus nachvollziehbaren Quellen mit reproduzierbaren Schritten entstanden, da weiß man ja, wo's her kommt.

Fakten, Fakten, Fakten

Ich habe also analysiert, was eigentlich beim Treiber so ankommt. Allerdings sind wir jetzt am Puls der Kernel-Zeit, d. h. ich musste erstmal den aktuellen staging-testing-Branch des Kernel für die Banane übersetzen (Image, Module, devicetree) und ein initramfs-Image generieren. Letzteres verursacht wieder Puls, weil der ARM64-Laptop nicht in der Lage ist, armhf-Binaries auszuführen. Aber dank update-ramfs auf dem BananaPi selbst, konnte auch dieses Problem wieder gelöst werden. Meine neue Erkenntnis des Tages: “dynamic debug” ist eine Kernel-Funktion, über die man ganz bestimmte debug-Ausgaben im laufenden Kernel an- und ausknipsen kann:

    echo "file dht11.c +p" | sudo tee /proc/dynamic_debug/control

..schaltet das Debugging unseres dht11-Kernelmoduls an. Ergebnis der Übung eigentlich recht diffus: so alle 150-300µs trudelt mal ein IRQ ein, über die Hälfte geht verschütt. CPU-Leistung, Interrupt-Geschehen, Speicher, Kernel-Meldungen: alles unauffällig. Was ist hier los?

Des Bananenproblems Kern

Ich weiß gar nicht so genau warum, aber ich hatte immer das Gefühl, dass das Problem mit der Verarbeitung von GPIO-Signalen zu IRQs des SoC zu tun haben muss – und nicht mit etwas, was Betriebssystem und CPUs so treiben. Diesem Gefühl folgend arbeitete ich mich mäßig inspiriert durch ein Datasheet des Allwinner H3 (zu finden in den Untiefen des Internet, warum auch immer dort und nicht beim Hersteller...). Architektur des SoC, Busse, Bridges. Beschreibung der GPIOs, Register der PA-Bank, hmhm. Oha! Hinter den Registern der PG-Bank kommt nochmal die PA-Bank dran: Kapitel 4.2.55ff beschäftigen sich mit Registern zur Kontrolle der Interrupts aus der PA-Bank. Und dann fällt mir ins Auge “4.22.2.61. PA External Interrupt Debounce Register”. Debounce, also ein Filter gegen Interrupt-Feuer durch prellende (mechanische) Taster, sowas kann das Gerät? Und der Default ist Abriegelung mit 32kHz, scheinen die kargen Infos nahe zu legen. Das könnte die Erklärung sein und war dann auch! Geschwind in Devicetree-Doku und Kernel-Sourcen geblättert, wie dieses Register bespielt wird und flugs den Devicetree-Overlay ergänzt um eine Einstellung des &pio:

   input-debounce = <5 0>;

...und schon funktioniert der Treiber!

Und nun?

Ihr findet das aktualisierte Devicetree Overlay in meinem Repository von Bananen-Ressourcen. Daneben auch einen veränderten DHT11-Devicetreiber, der nur noch auf falling edges lauscht, da die low-Pegel des Sensors keine Information tragen. Der ist kein Muss, aber meinen Messungen nach funktioniert er noch einen Tick zuverlässiger als der Original-Treiber und letzter benötigt einen eher noch niedrigeren debounce-Eintrag: mit input-debounce = <1 0> tut er's dann auch ganz robust. Solltet ihr die Polling-Version des Treiber gebaut und per device tree eingebunden haben: das kann jetzt glücklicherweise entfallen. Was mir noch unklar ist: ob das Fehlen einer input-debounce-Konfiguration nicht nachgerade ein Bug im Devicetree (aus den Kernel-Sourcen) ist. Denn an der A-Bank hängen auch andere Geräte, nicht nur über die Steckerleiste frei nutzbare GPIOs. Dass z. B. die seriellen Schnittstellen mit dieser Schaumbremse glücklich sein sollen, kann ich mir nur schwer vorstellen. Und seit der Umstellung ist die Kerneltask sugov:0, die mich vorher in der Anzeige von top wegen ihres (angeblichen) CPU-Konsums verwirrt hat, von dort verschwunden. Die Änderung ist also alles andere als frei von Nebenwirkungen, schauen wir mal, wie sie sich bewährt.

 
Weiterlesen...

from HDValentin

Bildschirmfoto des ChatGPT-Verlaufs

ChatGPT ist der neue heiße Scheiß, was programmierte Intelligenz angeht. Du stellst dem System über einen Textschlitz eine Aufgabe oder eine Frage und das Programm antwortet oder generiert einen Text zu Deiner Aufgabe.

Du kannst mit dem Programm in Chatmanier diskutieren oder Dir einfach einen Textvorschlag zu Deinem Thema erstellen lassen. Der Datenbestand mit dem der Chatbot agiert, basiert aktuell auf dem Jahr 2021.

In den Medien und sozialen Medien wird eifrig diskutiert, warum das Ding böse ist und warum, wie man verhindern kann, dass informierte Studentinnen und Studenten den Chat zum Schreiben von Hausarbeiten verwenden.

Was mir zu wenig diskutiert wird, sind die Chancen und Möglichkeiten, die sich uns im Alltag dadurch bieten. Denn gerade für Schreibende, für Menschen mit geringen Deutschkenntnissen oder im Bildungsbereich lässt sich damit kreativ arbeiten.

Bewerbungen formulieren

Nehmen wir einmal an, Du kommst aus Nepal, hast in Deutschland Dein Pflegeexamen, nach einer dreijährigen Ausbildung abgeschlossen und möchtest Dich nun bewerben.

Folgende Aufgabe habe ich ChatGPT gegeben und ein passendes Ergebnis bekommen. Über die Texte müsste die Person und ein Korrektor noch einmal darüber gehen. Aber es ist ein Anfang und deutlich mehr, als ein weißes Blatt:

Aufgabe

"Schreibe ein Stellengesuch für eine Pflegefachkraft, Staatsangehörigkeit nepaleisch, Sprachniveau Deutsch B2, Ausbildung und Examen in Deutschland"

Ergebnis

"Sehr geehrte Damen und Herren, Ich bin auf der Suche nach einer Stelle als Pflegefachkraft und bin nepalesischer Staatsangehöriger. Ich habe meine Ausbildung und mein Examen als Pflegefachkraft in Deutschland absolviert und verfüge über ein B2-Niveau in Deutsch. Ich habe bereits Erfahrungen in der Pflege von Patienten mit unterschiedlichen Diagn und Pflegebedürfnissen gesammelt und bin motiviert, meine Kenntnisse und Fähigkeiten in der deutschen Pflegebranche einzubringen. Ich bin ein engagierter und verantwortungsbewusster Mitarbeiter und habe ein hohes Verständnis für die Bedürfnisse von Patienten. Ich arbeite gerne im Team und bin davon überzeugt, dass ich einen wertvollen Beitrag zur Verbesserung der Pflegequalität leisten kann. Ich bin flexibel und habe eine ausgeprägte Lernbereitschaft. Ich bin darauf vorbereitet, an Fortbildungen und Schulungen teilzunehmen, um meine Kenntnisse zu erweitern und mich an die Anforderungen der deutschen Pflegebranche anzupassen. Ich würde mich freuen, wenn Sie mir die Möglichkeit geben, mich Ihnen als Pflegefachkraft vorzustellen und meine Fähigkeiten unter Beweis zu stellen. Ich stehe Ihnen gerne für ein persönliches Gespräch zur Verfügung. Mit freundlichen Grüßen, [Name]"

Bewerbung in anderen Sprachen

Eine Bewerbung in einer eher seltenen Sprache wie nepalesisch verfassen zu lassen, funktioniert auch. Es ist schön anzusehen, wie der Chatbot das Schreiben generiert.

Inhaltlich ist das Ergebnis allerdings eher Nonsens und nicht für eine Bewerbung zu verwenden:

Aufgabe

"Schreibe eine Bewerbung als Pflegefachkraft, auf nepalesich"

Ergebnis

" प्रिय स्वास्थ्य सेवा प्रबंधक, मैले आफ्नो स्वास्थ्य सेवा संस्थामा परिचालन गर्न आवेदन गर्दैनुहुन्छ। मैले पिछलै तीन वर्षमा स्वास्थ्य सेवा संस्थामा काम गर्दा स्वास्थ्य सेवा को कुरा समझदार र स्वास्थ्य सेवा को कुरा समझदार हुनुहुन्छ। मैले स्वास्थ्य सेवा को कुरा समझदार र स्वास्थ्य सेवा को कुरा समझदार हुनुहुन्छ। मैले स्वास्थ्य सेवा संस्थामा काम गर्न प्रसन्न र ताकिएको हुनुहुन्छ। मैले स्वास्थ्य सेवा संस्थामा काम गर्न सक्छु र स्वास्थ्य सेवा को कुरा समझदार हुनुहुन्छ। कृपया मलाई स्वास्थ "
 
Read more...

from Gedankenwuschel

Die Abteilungsleitung bearbeitete mich auch noch einmal zum Thema Termine und übte gehörigen Druck auf mich aus. Es war ihr schwer zu vermitteln, dass es Termine gibt, über die sie nicht Bescheid wissen muss – die persönlich sind.

Besonders schwer war es für mich, ihr das klarzumachen, ohne ihr zu sagen, auf welchem Termin ich war.

Ich hörte bei ihr eine gewisse Angst heraus, dass Sachlagen und Tatsachen über die Abteilung in der Personalabteilung bekannt werden könnten. Eine weitere Unsicherheit besteht darin, dass ich mich um einen Wechsel bemühen könnte.

Positiv fand ich, dass wir über meine Stelle und meine Belastung gesprochen haben. Das gibt mir die Hoffnung, dass sie sich mit mir beschäftigt und sich meine Arbeitssituation verbessern könnte.

Ich konnte auch mit dem erkrankten Kollegen sprechen. Wir sprachen über die Situation und das Gespräch mit der Abteilungsleitung. Er bestätige mir, dass die Vorgesetzten gerne Druck ausüben, um Dinge herauszubekommen, die sie nicht wissen, oder eine gewisse Unsicherheit verursachen.

#chefin #vertrauen #selbstschutz

 
Weiterlesen...

from Gedankenwuschel

Es gab einen beruflichen Termin der Personalabteilung. Ich informierte meine Vorgesetzte mit einer Reihe von anderen Terminen. Sie wünscht sich das so. Sonst vergisst sie der Termine, hat keine Übersicht und wirft mir vor, ich hätte sie nicht ausreichend informiert.

Bei der Durchsicht der Terminliste fragte sie explizit nach diesem Termin. Ich hatte hier nur das Gebäude auf dem Firmengelände angegeben. Sie wollte wissen, was das für ein Termin sei. Ich sagte es ihr nicht.

Sie bäffte: „Willst Du es nicht sagen?“. Ich antwortete: „Nein, es ist nicht erforderlich, dass Du alles weißt“. Sie fragte explizit, ob ich mich woanders beworben habe. Ich konnte ihr wahrheitsgemäß antworten, dass ich aktuell keine Bewerbung laufen habe.

Der Termin fand statt.

Am Tag danach kam sie zu mir an den Tisch. Sie wusste, auf welchem Termin ich gewesen bin und fragte, warum ich ihr nicht gesagt habe, um was es bei dem Termin geht. Ich schaute nach unten und wusste nicht, was ich ihr in diesem Moment antworten soll, außer ein „hmmpf“.

Beim Weggehen fragte sie, warum ich nicht genügend Vertrauen in sie hätte, um ihr so etwas zu sagen. Es sei ja ein erfreulicher Termin gewesen.

Ich frage mich: „Warum sollte ich Vertrauen in sie haben?“. Bisher habe ich von ihr keinerlei vertrauensbildendes Verhalten erlebt. Und auch, wenn ich mit ihr inzwischen anders umgehe, ist unser Verhältnis noch lange nicht geheilt oder gut.

Informationen, die ich ihr gegeben habe, hat sie in der Vergangenheit hauptsächlich gegen mich und für ihren eigenen Vorteil verwendet.

Daher gibt es nun keine Informationen über sensible Themen mehr. Was sensibel ist, bestimme ich.

#chefin #vertrauen #selbstschutz

 
Weiterlesen...

from Pelzvieh

GPIO, aber wie?

Wenn es darum geht, auf den Einplatinencomputern elektronische Komponenten anzusteuern bzw. auszulesen, wird man sowohl beim #RaspberryPi als auch beim #BananaPi auf Libraries und Dämonen im Userland gestoßen: #pigpiod, #WiringPi und ähnliche. Schaut man sich mal oberflächlich an, wie diese gebaut sind, kriegt man es mit der Angst: Direkte Registerzugriffe per /dev/mem werden munter gemischt mit Kernelfunktionen verwendet, eine Prüfung ob ein Pin bereits von einem Kernelmodul bedient wird, findet nicht statt. Z. B. stellte ich erst im Zuge meiner BananaPi-Rechere fest, dass ich auf einem RaspberrPi einen Temperatursensor per gigpiod zugreife, während gleichzeitig das OneWire-Kernelmodul darauf lauscht. Im Kernel und im klassischen Linux-Userland gibt es dagegen auch fertige Lösungen (irgendwie weniger präsent in meiner favorierten Suchmaschine): das neue GPIO-Kernel-Interface unter /sys/bus/gpio/devices/gpiochip0 kann

  • zum einen bastlerisch-explorativ mit den Tools aus dem Paket gpiod genutzt werden (also Achtung: gpiod ist etwas völlig anderes als pigpiod, die bauen nicht aufeinander auf, sondern beharken sich),
  • zum anderen gibt es fertige Kernelmodule für bestimmte Hardware, die man an diese GPIO-Pins hängt (genau für sowas wurde das IIO-Framework im Kernel bereit gestellt).

Das Beispiel”projekt”

Ich nehme hier mal als Beispiel einen Temperatur- und Feuchtigkeitssensor #DHT22. Dieser wird an einen PIN angeschlossen und es gibt einen IIO-basierten Kernel-Treiber dht11.ko (DHT11 und DHT22 sind offensichtlich sehr nahe verwandt und dht11.ko kann auch DHT22). Spoiler: das Beispiel ist fies gewählt, denn der dht11.ko funktioniert am BananaPi am Ende des Tages nicht. Ich hoffe, dass einer von euch weiß, was das Problem verursacht und wie man es abgestellt bekommt :-D

Anschluss des Sensors

Mein DHT22 kommt auf einer kleinen Platine konfektioniert mit 3 beschrifteten Anschlüssen nebst passendem 3-poligen Kabel. Der BananaPI hat im Auslieferungszustand ein 40-poliges Lochraster, in das ich eine Sockelstiftleiste eingelötet habe (vermutlich gibt es auch Sockelstiftleisten mit Klemmkontakten). Das Anschlussschema findet man im BananaPi-Wiki. Der (+)-Anschluss muss mit einem 3,3V-Pin verbunden werden, Pin Nr. 1 bietet sich an. Der (–)-Anschluss mit einem Gnd-Pin, z. B. Pin Nr. 6. Der GPIO-Pin kann grundsätzlich aus einer reichlichen Auswahl gewählt werden, wir nehmen Pin Nr. 7, gemäß Schema Anschluss PA6. Also nicht verwechseln: wir stöpseln die Hardware an Pin 7, in der Software heißt das Ding aber PA6 (A=Bank 0, 6=Nr. 6 auf dieser Bank).

Konfiguration von dht11.ko – das Devicetree Overlay

Versucht man sich diesem dht11.ko naiv zu nähern – ich hätte erwartet, dass das Kernelmodul irgendwelche Parameter bietet, über das man ihm mitteilt, an welchem Pin das Gerät sitzt – aber weit gefehlt, so tickt diese IIO-Welt nicht: sie möchte, dass wir über den #Devicetree kundgeben, welche Geräte wo an welchen Bussen hausen. Der eigentliche Devicetree des BananaPi findet sich bereits in den Sourcen des Linux-Kernel. Er beschreibt sozusagen, welche Geräte auf der kleinen Platine wie zusammengestöpselt sind (sogar die auf dem SOC integrierten Geräte). Wir gedenken aber nun, ein weiteres Gerät hinzuzufügen, indem wir es an einen GPIO-Pin anschließen. Diese Information müssen wir also in den Devicetree einbauen. Da wäre es natürlich praktisch, wir könnten genau die Aussage, “wir haben ein DHT11 an PA06 gesteckt” hinterlegen, ohne uns mit dem ganzen Devicetree auseinandersetzen zu müssen? Genau dafür gibt es Devicetree Overlays. Damit das schick funktioniert, habe ich in der Anleitung zur Erstellung des Boot-Images beim Kompilieren des Devicetree die Option DTC_FLAGS=-@ hineingeschmuggelt. So enhält der kompilierte Devicetree die logischen Symbole und wir können im Devicetree Overlay darauf referenzieren. So sieht das dann aus (du findest die Datei auch auf Github):

// Definitions for dht11 module
/*
Adapted from dht11.dts for Raspberrypi, by Keith Hall
Adapted by pelzi.
*/
/dts-v1/;
/plugin/;

/ {
        fragment@0 {
                target-path = "/";
                __overlay__ {
                        temperature_humidity: dht11@6 {
                                compatible = "dht22", "dht11";
                                pinctrl-names = "default";
                                pinctrl-0 = <&dht11_pins>;
                                gpios = <&pio 0 6 0>; /* PA6 (PIN 7), active high */
                                status = "okay";
                        };
                };
        };

        fragment@1 {
                target = <&pio>;
                __overlay__ {
                        dht11_pins: dht11_pins {
                                pins = "PA6";
                                function = "gpio_in";
                                bias-pull-up;
                        };
                };
        };

        __overrides__ {
                gpiopin =       <&dht11_pins>,"pins:0",
                                <&temperature_humidity>,"gpios:8";
        };
};

Das “Fragment 0” erzeugt einen neuen Knoten “dht11@6” und dem Symbol “temperature_humidity” direkt an der Baumwurzel. Es referenziert auf dht11_pins als pinctrl-0. Diese erzeugt das “Fragment 1”, und zwar dort wo das Gerät auch hängt, nämlich am PIO-Controller, also unterhalb des Knotens mit dem Symbol pio. Es gibt an, an welchen Pins es hängt (pins, nur einer, mit dem Symbol PA6). Schließlich definieren wir noch eine Parametrierung gpiopin, um einen anderen Pin angeben zu können. Aus dieser Definition kompilieren wir ein binäres Devicetree-Overlay:

dtc dht11-banana.dts -@ -o dht11-banana.dtbo

Erzeugen und Einspielen des zusammengesetzten Devicetree

Während das Bootsystem des RaspberryPi bereits eine Nachlade- und Parametrierungslogik implementiert (/boot/config.txt), haben wir solche Bequemlichkeit auf dem BananaPi (noch?) nicht. Man kann durchaus dem U-Boot-Loader sowohl Devicetree, als auch separate Overlays zum Laden und zusammenmischen antragen. Da dies aber ohnehin hart codiert auf dem Image ist, bevorzuge ich aktuell, den Devicetree im Vorfeld fertig zu erzeugen und aufzuspielen, da ich Fehler nicht erst im Rahmen des Bootvorganges auf einer seriellen Console zu Gesicht bekomme, sondern als gewöhnliche Meldung eines gewöhnlichen Kommandozeilentools. Auftritt fdtoverlay!

fdtoverlay -v -i sun8i-h2-plus-bananapi-m2-zero.dtb -o banana-with-dht.dtb dht11-banana.dtbo

Dieser Aufruf erzeugt aus dem gewöhnlichen Devicetree des BananaPi M2 Zero, sun8i-h2-plus-bananapi-m2-zero.dtb und dem gerade erstellten Overlay dht11-banana.dtbo einen vollständigen Devicetree mit DHT-Knoten namens banana-with-dht.dtb. Dies kopiere ich einfach auf das Image über den bisher genutzten Devicetree:

cp banana-with-dht.dtb /mnt/debinst/boot/dtbs/sun8i-h2-plus-bananapi-m2-zero.dtb

Diese Übungen kann man selbstmurmelnd auch auf dem laufenden Device selbst durchführen und das Ergebnis dann nach /boot/dtbs/sun8i-h2-plus-bananapi-m2-zero.dtb kopieren – aktiv wird es aber erst nach einem Reboot. Ich habe leider kein Userspace-Kommando à la dtoverlay auf dem RaspberryPi finden können, um den Devicetree auf dem laufenden Gerät zu modifizieren. Das ist erstaunlich, weil es dafür eigentlich eine Kernel-API gibt, aber dtoverlay funktioniert tatsächlich nur auf einem RaspberryPi. Wer möchte ein solches Tool implementieren?

Neustart und Nutzung

Bootet man nun den BananaPi mit diesem ergänzten Devicetree, bemerkt man sofort ein geladenes Kernelmodul

$ lsmod|grep dht
dht11                  20480  0
industrialio           65536  1 dht11

Und es ist fein säuberlich hinterlegt, dass und wofür wir unseren Pin PA6 verwenden:

$ sudo gpioinfo
gpiochip0 - 224 lines:
[...]
	line   6:      unnamed    "dht11@6"   input  active-high [used]
[...]

Der DHT-Treiber stellt uns fertige Geräte zum Auslesen zur Verfügung:

$ ls -l /sys/bus/iio/devices/iio\:device0/
insgesamt 0
-r--r--r-- 1 root root 4096 15. Jan 13:16 dev
-rw-r--r-- 1 root root 4096 15. Jan 13:16 in_humidityrelative_input
-rw-r--r-- 1 root root 4096 15. Jan 13:16 in_temp_input
-r--r--r-- 1 root root 4096 15. Jan 13:16 name
lrwxrwxrwx 1 root root    0 15. Jan 13:16 of_node -> ../../../../firmware/devicetree/base/dht11@6
drwxr-xr-x 2 root root    0 15. Jan 11:30 power
lrwxrwxrwx 1 root root    0 15. Jan 13:16 subsystem -> ../../../../bus/iio
-rw-r--r-- 1 root root 4096 14. Jan 23:08 uevent

Wir können die aktuellen Messwerte einfach durch Lesen an den device files in_humidityrelative_input und in_temp_input ermitteln.

Das Problem mit dht11

Wie oben schon angekündigt, gibt es hier aber leider ein verdrießliches Problem – das Auslesen funktioniert nicht:

$ cat /sys/bus/iio/devices/iio\:device0/in_humidityrelative_input 
cat: '/sys/bus/iio/devices/iio:device0/in_humidityrelative_input': Die Wartezeit für die Verbindung ist abgelaufen

Parallel dazu nennt uns dmesg:

[52801.685052] dht11 dht11@6: Only 18 signal edges detected

Wie ich nach etwas Analyse definitiv bestätigen kann: der Treiber weckt den DHT11-Sensor auf und dieser fängt an, seine Messwerte zu schicken. Das Dumme ist, dass der BananaPi nur ein Bruchteil der tatsächlich entstandenen Flanken am Signalpin via Interrupt einfängt. Wir wissen von den eingefangenen Flanken zwar hinreichend genau die Zeitstempel, aber es fehlen halt ungefähr 70 Flanken! Warum es so lange Totzeiten zwischen den Interrupts gibt, ist mir noch nicht klar. Für Hinweise wäre ich extrem dankbar!

Was funktioniert denn nun?

Wenn du z. B. nur ein paar Ein-Aus-Sensoren (auch Bewegungsmelder...) und LEDs verbinden möchtest, funktioniert das auf analoge Weise durchaus. Du kannst analog des fragment@1 oben Pins für Input oder Output konfigurieren, inkl. Pull-Up/Down-Widerständen (Input) oder Drive-Konfiguration (Output). Und es gibt eine riesige Menge an IIO-Device-Treibern fertig in den Linux-Quellen, die eigentlich nur darauf warten in eigenen Projekten genutzt zu werden. Wie du den Treiber eines GPIO-basierten Gerätes am BananaPi in Betrieb bekommst, sollte dieser Artikel dir jetzt verraten haben. Ich wäre dir dankbar, wenn du erfolgreiche Anbindungen von anderen Sensoren auch veröffnetlichen würdest!

Vertiefende Dokumentation

  1. Device Tree Usage
  2. Device Tree Overlay Notes
  3. Bindings der IIO-Treiber
 
Weiterlesen...

from Pelzvieh

Warum die Übung?

Die etablierten Informationsquellen zum BananaPi (z. B. das Wiki) verlinken einmalig fertig gebaute Images und bieten Anleitung, den Rechner auf dieser Basis in Betrieb zu nehmen.

Warum ist das ein Problem?

  1. Vulnerabilities: die Images wurden von irgendeinem vergangenen, Jahre alten, Releasestand von Linux-Kernel und Distributionen gebaut. Inzwischen dürften hunderte von Schwachstellen dieses Standes bekannt geworden sein, deren Korrekturen aber nicht in den Images enthalten sind.
  2. Unklare Herkunft: es ist nicht transparent, wer diese Images gebaut hat, welche Review-Prozesse stattgefunden haben und welche Änderungen an den Upstream-Quellen durchgeführt wurden und zu welchem Zweck.
  3. Mangelnde Professionalität: unter den veröffentlichten Images befinden sich solche, die nicht durch einen Buildprozess erzeugt wurden, sondern einen Snapshot eines manuell aufgesetzten und genutzten Systems darstellen. Es finden sich insbesondere lange Shell-Histories, konfigurierte Zugänge zu WLANs taiwanesicher(?) Shared Office-Standorte.
  4. Fehlende Versionskontrolle: es werden auf unterschiedlichen Seiten unterschiedliche Stände auf unterschiedlichen Filesharing-Plattformen referenziert, von denen einige nicht mehr richtig funktionieren. All dies zusammen genommen macht diese Quellen zu einem El Dorado für persistente Angriffe (APTs). Sowas kommt mir nicht ins Haus und euch hoffentlich nicht ins Unternehmen. Da sind wir uns doch einig..?!? Dann kann's ja losgehen!

Ziele

  1. Ein Image zum Aufspielen auf Micro-SD-Karte wird erstellt
  2. Ein #BananaPi M2 Zero kann von einer mit diesem Image bespielten SD-Karte booten
  3. Der Bootvorgang verläuft unfallfrei in ein nutzbares System
  4. Funktionsfähig sind zumindest: Mini-HDMI (Bildschirmausgabe), Micro-USB-Port, GPIO (PINs), WLAN
  5. Das Gerät bucht sich automatisch in das konfigurierte WLAN ein und ist remote über ssh erreichbar (denn das Gerät hat keine fertig konfektionierte Ethernet-Schnittstelle und ich bin zu faul um die dafür nötigen PINs einzulöten und an per Kabeln an eine Ethernet-Buchse zu fummeln).

Anlegen des Images

Wir legen das spätere Image als lokale Datei auf einem Debian-Linux-Rechner (gerne virtuell...) an, machen diese via Loop-Device als Blockgerät verfübar und richten dieses richtig ein. Dieses Vorgehen hilft gegen die Versuchung, die SD-Karte zur Unzeit schonmal ins Zielgerät einzulegen und darauf manuell weiter zu fummeln, bis etwas funktioniert. Das Vorgehen hier folgt eigentlich nur Schritt für Schritt der entsprechenden Anleitung von Debian! Wenn dieser Artikel schon einige Jahre alt ist wenn du das liest, solltest du dort nach einer aktuellen Anleitung suchen. (todo: Hier fehlt eine Aufstellung der auf dem Linux-Rechner benötigten Pakete und sonstigen Voraussetzungen; beispielsweise fehlt die Warnung, dass das alles nicht auf arm64-Umgebungen funktioniert, weil ...)

dd if=/dev/zero of=bananapi_debian.img bs=1G count=3
sudo losetup -f bananapi_debian.img 
sudo fdisk /dev/loop0 
sudo mkfs.ext4 -O ^metadata_csum,^64bit /dev/loop0p1
sudo losetup -d /dev/loop0 
sudo losetup -P -f bananapi_debian.img 
sudo mkfs.ext4 -O ^metadata_csum,^64bit /dev/loop0p1 
sudo mkdir /mnt/debinst
sudo mount /dev/loop0p1 /mnt/debinst/
sudo debootstrap --arch=armhf --foreign --include=binfmt-support,wpasupplicant,dhcpcd5 bullseye /mnt/debinst
sudo cp /usr/bin/qemu-arm-static /mnt/debinst/usr/bin/
sudo LANG=C.UTF-8 chroot /mnt/debinst qemu-arm-static /bin/bash

An dieser Stelle haben wir die benötigten Softwarepakete schon in unserem Image liegen, wir können Programme auf der Zielplattform ausführen und sind gerade in die Systemumgebung unseres aufzusetzenden Rechners geschlüpft. Weiter geht's, nun im chroot:

/debootstrap/debootstrap --second-stage
editor /etc/adjtime

Das ist jetzt ein bisschen doof, weil du nicht siehst, was man da reinschreiben kann. Aber du kannst die Man-Page bzw. die Debian-Anleitung zu Rate ziehen :–)

dpkg-reconfigure tzdata
editor /etc/systemd/network/eth0.network
editor /etc/systemd/network/wlan0.network
editor etc/wpa_supplicant/wpa_supplicant.conf

Dokumentation nebst Beispielen findest du in der man-Page wpa-supplicant.conf

mkdir root/.ssh
editor root/.ssh/authorized_keys 

Hier kopierst du den public ssh-key rein, mit dem du dich am laufenden System anmelden willst. Achtung, es ist KEIN Passwort-Login für root möglich! Vielleicht möchtest du auch direkt an dieser Stelle einen User anlegen, für diesen einen ssh-Key hinterlegen, ihn für sudo berechtigen usw. Das halte ich für eine gute Idee, ist aber normales Linux-Alltagsgeschäft, da brauchst du ja keine Tipps von mir.

editor etc/resolv.conf
apt install openssh-server
editor etc/apt/sources.list.d/security.list # hier trägst du die apt source für Security-Updates deiner Distribution ein
editor etc/apt/sources.list.d/firmware.list # hier trägst du die apt source ein, aber die Sektion non-free
apt update
apt install locales && dpkg-reconfigure locales
apt install console-setup && dpkg-reconfigure keyboard-configuration
apt install linux-image-armmp-lpae
apt install firmware-linux bluez-firmware firmware-atheros firmware-bnx2 firmware-bnx2x firmware-brcm80211 firmware-cavium firmware-ipw2x00 firmware-iwlwifi firmware-libertas firmware-qcom-soc firmware-qlogic firmware-ti-connectivity firmware-zd1211 

Viel hilft viel! Naja, ehrlich gesagt müsste sich mal jemand die Mühe machen herauszusuchen, welche Firmware-Pakete der BananaPi wirklich braucht...

systemctl add-requires wpa_supplicant.service systemd-networkd-wait-online.service
systemctl add-wants network-online.target wpa_supplicant.service
editor /lib/systemd/system/wpa_supplicant.service

Im ausgelieferten Zustand würde wpa_supplicant nur über dbus lauschen, daher musst du -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf zu ExecStart hinzufügen. Kennst du eine saubere Lösung für das Problem?

echo "banana" > /etc/hostname
editor /etc/dhcpcd.conf # enable option "hostname"
exit

Nun sind wir wieder draußen aus dem Image. Die Userland ist jetzt fertig. Was fehlt, sind Bootloader und die Systemkonfiguration in /boot. Das U-Boot (den Bootloader) bauen wir wie folgt:

git clone git://git.denx.de/u-boot.git
cd u-boot
make bananapi_m2_zero_defconfig
make CROSS_COMPILE=arm-linux-gnueabihf-
cd ..

Eine Device-Tree-Definition für den BananaPi M2 Zero gibt es glücklicherweise fertig im Linux-Sourcetree. Wir können sie also ebenfalls bauen:

apt source linux-image-5.10.0-20-armmp-lpae
cd linux-5.10.*/
make CROSS_COMPILE=arm-linux-gnueabihf- defconfig
make CROSS_COMPILE=arm-linux-gnueabihf- DTC_FLAGS=-@ dtbs
cd ..

Eine Bootloader-Konfiguration leihen wir uns von TuryRx in github aus. Das U-Boot-Script wird allerdings fest codierte Namen für Kernel und InitRAMFS verwenden, während diese Dateien im Debian-Paket mit Versionsnummern verziert sind. Deshalb kopieren wir die gerade installierten einfach.

wget https://github.com/TuryRx/Banana-pi-m2-zero-Arch-Linux/raw/master/boot.cmd
mkdir /mnt/debinst/boot/dtbs
sudo cp u-boot/u-boot-sun8i-h2-plus-bananapi-m2-zero.dtb /mnt/debinst/boot/dtbs/sun8i-h2-plus-bananapi-m2-zero.dtb
sudo cp /mnt/debinst/boot/vmlinuz-5.10.0-20-armmp-lpae /mnt/debinst/boot/zImage
sudo cp /mnt/debinst/boot/initrd.img-5.10.0-20-armmp-lpae /mnt/debinst/boot/initramfs-linux.img
sudo mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "BananaPI boot script" -d boot.cmd /mnt/debinst/boot/boot.scr
sudo umount /mnt/debinst 
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/loop0 bs=1024 seek=8 # ja, so habe ich auch gekuckt: so lädt die Firmware des BananaPi ihren Bootloader...
sudo losetup -d /dev/loop0

Fertig ist das Image! Du kannst es jetzt auf eine Micro-SD-Karte übertragen und einen BananaPi M2 Zero damit starten.

 
Weiterlesen...

from HDValentin

Ich kaufe meine Kameraausrüstung, hauptsächlich gebraucht. Das spart zum einen Geld, denn der Wertverlust beim Neukauf ist meist enorm. Außerdem spart es Ressourcen für die Herstellung und ist damit besser für unseren Planeten.

Neben den üblichen Kleinanzeigenwebsites gibt es einige Händler, die Gebrauchtware im Internet anbieten. Der Vorteil gegenüber dem Privatkauf, ist das 14-tägige Rückgaberecht, eine Rechnung, eine zwölfmonatige Gewährleistung und die Prüfung der Geräte vorab durch die Verkäuferin. Die letzten beiden Serviceleistungen bieten nicht alle Händlerinnen.

Folgend die unvollständige Liste der Händlerinnen, die Fotokameras und Objektive anbieten. Solltest Du Ergänzungen haben, freue ich mich sehr über Deine Nachricht.

Fotoläden und Händler

Shops von Fotorückkäufern

Ebay Shops von Händlern

Kleinanzeigen und Sonstiges

 
Read more...