Entries tagged 'author:steeph' (Page 22)

Entry created on 2022-05-16 Authors: steeph (376) Categories: Keyboards (10) Silly (32) Thoughts (73) Languages used: en (257) edit

I overestimate that by 2025 there will be more distinct keyboard layouts than humans.

Comment via email
Entry created on 2022-05-14 Authors: steeph (376) Categories: Sack Barrow (1) Thoughts (73) Languages used: de (90) edit

Ob ich es wohl in absehbarer Zeit schaffen werde, es mir selbst gegenüber zu rechtfertigen, zum Zeitpunkt des Kaufs angenommen zu haben, dass es ausreichende Gründe dafür gibt, 560 € für eine für den Einsatzzweck individualisierte, klappbare Aluminium-Sackkarre auszugeben, nur weil ich sie ja beruflich einsetze und bei Einkäufen professionellen Equipments keine Kompromisse eingehen möchte, dass ich es nicht für den Rest des Jahres bereuen werde, kann ich aktuell nur schwer einschätzen.

Comment via email
Entry created on 2022-04 Authors: steeph (376) Categories: Computer (78) Free Software Foundation (1) LibrePlanet (1) Talks (4) Languages used: en (257) edit

Working through open tabs of stuff that sounds interesting, I came across a bunch of videos of talks from LibrePlanet 2022 recently. Never heard of it before. But the videos are as interesting as their titles make them sound.

Blog post of the FSF: https://www.fsf.org/blogs/community/take-the-next-step-in-living-liberation-watch-the-libreplanet-2022-videos-today

Video recordings on FramaTube:

Video recordings on libreplanet.org: https://media.libreplanet.org/u/libreplanet/tag/libreplanet-2022-video/

And there's also @libreplanet2022@framatube.org in the fediverse. (Edit: Apparently that profile doesn't exist anymore.)

Comment via email
Entry created on 2022-04-29 Authors: steeph (376) Categories: Neurodivergence (3) Thoughts (73) Languages used: en (257) edit

On close inspection, really everyone is the same: different. For that reason I don't understand how there can be a viable concept of neurodiversity in contrast to a neurotypical majority. But I do understand the concept. Weird.

Comment via email

The frontmost part of my tongue it littered with forgotten thoughts and blog entry ideas.

Entry created on 2022-04-21 Authors: steeph (376) Categories: ADHD (3) Thoughts (73) Languages used: en (257) edit

I wanted to post about three things today after work, when I'm back with my computer. I will likely remember one or two of those things when I'm back at work and can't take a break to write a blog entry.

Comment via email

Looking for a 286 operating system

Entry created on 2022-04-17 Authors: steeph (376) Categories: 80286 (1) AIX (1) Batteries (7) CD-ROM (2) CP-M (1) Computer (78) Desktop (1) IBM (1) ISA (2) MFM (2) MS-DOS (1) MikeOS (2) Olympia People (1) Peacock (1) Projects (41) Prologue (1) Retro Computing (6) Unix (1) VGA (1) Vintage (3) Xenix (1) Languages used: en (257) edit

I got myself a 286. A small tower PC made from collected parts from here and there, a clock display and turbo button, but a motherboard that doesn't seem to have a turbo mode. An MFM hard drive, Mitsumi CD-ROM drive, two floppy drives, a VGA card, IO card, a damaged case. It looks like I could have built it from parts I found here and there. I reckon that's how it was built. It's the first working 286 that I had since I so stupidly through out my IBM PS/2 Model 30. Well, it wasn't that stupid at the time. It was a conscious decision. But anyway. The only other time I had a 286 board was when somebody gifted me their old PC because it was both worthless and broken. The CMOS battery had leaked and I didn't know enough about electronics to make it work, had nobody to ask and internet wasn't really a thing back then.

I had been looking for a specific model before: A Peacock 286 desktop. But Not only didn't I find one for sale so far, I'm pretty sure it would cost more than I'd be willing to pay for a vintage PC just so I could own the same PC model that was the first computer I ever used (for homw work in first grade). The first computer I had contact with was an Olympia People. I didn't even look for one of these because it would be a serious collector's piece and be respectively priced.

So I got just any working 286 PC; just to fill the gap in what I therefore should now start to call my collection of vintage hardware. It just happened to be one with a working MFM hard disk. As if I didn't already have enough unfinished and unstarted projects now I even payed money to buy me another one. Because now I have to do something with this machine, obviously. I bought it weeks ago and it's getting bored.

I thought about what OS I might want it to run. MS-DOS would be the obvious choice. Too obvious for my taste. CP/M after that. But that's too similar. I want something different. But I don't even know what other systems exist that run on a 286. Linux should be out. (Although I haven't yet looked if somebody has made some part of the kernal work on a 286. I doubt it though. No extended mode, no multitasking.) IBM AIX wasn't available for the 286 models either. Are there other Unix clones or versions that run on a 286? Of course there are. I just don't know them. Prologue comes to mind. And Xenix. What others are there? Which one should I try? I could test MikeOS on it.

Comment via email

PIN Changer

Entry created on 2022-04-14 Authors: steeph (376) Categories: Arduino (4) Code (31) DIY (17) Electronics (16) Hardware (16) Projects (41) incomplete (22) Languages used: en (257) Topics: Projects → Arduino (4) edit

I had to change the default PINs of over 200 SIM cards once. And such a situation could arise again. So I've built a PIN changer in which I just have to insert the card, wait a few seconds and it's done.

The Card Slots

SIM cards in their natural form factor aren't as fiddly to handle as they are in the form factors most people know, which is Mini SIM, Micro SIM and Nano SIM. Classical SIM cards are the same size as other smart cards. I found a card slot with an end switch on eBay. I like it when I find industry grade parts for cheap on eBay as part of some remaining stock. Additionally I've used a slide-in mini SIM slot and another, separate end switch from my parts collection in case I have to change the PINs of smaller cards.

The Baseband Processor

Other parts that I've used is an Arduino Nano sized Arduino Nano nearly-clone and an A6 modem module. There are many similar modem modules designed around different but similar ICs. Many of them are cheap and widely used for DIY IoT projects. So example code for the Arduino and other help can be easily found on the web. I don't know why I went with a module with an A6. But it works fine and there is an Arduino library for it. And cheap modules with the chip on it are available.

(tba:voltage supply)

The Controller

Yes, Arduino may be kind of the noob go-to board and I could look up how to use microcontrollers on their own finally (we did it 20 years ago and it wasn't that hard) and even if I don't want to I could finally start to use ESP32s like everybody else. But I know Arduinos and by now I'm familiar with it and it works, so, whatever. Arduino Nano is kind of my go-to form factor now because they have integraded USB, are Uno compatible and small. Unless I need more or something very specific I use Arduino Nano almost-clones with USB-C port.

The hardware put together

(tdd)

The Code

The code is a real mess. It had been a long time since I had written any even halfway serious C. It may have been the first time, actually. It is not my language. The sketch surely is very easily improved by somebody who knows what they are doing. I intended to improve it myself. But the project is currently abandoned and The code is doing what it should in a way I initially had in mind as the goal. But I'll leave the mess of the comments in for the case that somebody wants to make out what I was thinking.


// Funktionen umschreiben: Beim Empfangen wird erwartet: 1. der AT-Command zurück, 2. eine Antwort, 3. OK oder ein ERROR.
//                         Daher sollte abgefragt werden, bis entweder OK oder ERROR kam oder 20/50/9001(?) Abfragen lang weder OK noch ERROR an kam.
//                         Die Antwort in Variable speichern? Naja, String zurückgeben halt.
//                         Antworten, die mit "^" anfangen brauchen nicht gehandlet zu werden, da keine Kommandos, die mit AT^ beginnen gesendet werden.


#include  

SoftwareSerial A6MODULE(6,7);
int intled = 13; // Internal LED
int successled = 8; // Green LED
int failled = 9; // Red LED
int wrongpinled = 10; // Orange LED

boolean debug=true;

//String commands[5] = { "AT", "AT+CPINC2", "AT+CPIN?", "AT+CLCK=\"SC\",2", "AT+CPIN=\"3010\"" };
//int command = 0;

const byte maxmsglength = 32;
char received[maxmsglength];
boolean newData = false;
String response = "";

int i=0;

/*
To check/do:
1  AT: OK?
2  is PUK required - abort
3  are less than 3 PIN attempts left? - abort AT^CPINC=?
4  is PIN disabled
       5  enable it: 0000
6  is PIN enabled
       7  unlock
8  is card unlocked
       9  change PIN: 1996
              was PIN wrong - report and leave it
*/


void setup() {
  pinMode(intled, OUTPUT);
  pinMode(successled, OUTPUT);
  pinMode(failled, OUTPUT);
  pinMode(wrongpinled, OUTPUT);
  // All LEDs turn on at the beginning and stay on during the wait period at the beginning, then turn off before communication with the A6 module starts.
  digitalWrite(intled, HIGH);
  digitalWrite(successled, HIGH);
  digitalWrite(failled, HIGH);
  digitalWrite(wrongpinled, HIGH);
  Serial.begin(9600);
  delay(500);
  digitalWrite(intled, LOW);
  digitalWrite(successled, LOW);
  digitalWrite(failled, LOW);
  digitalWrite(wrongpinled, LOW);
  A6MODULE.begin(9600);
  delay(500);
  digitalWrite(intled, LOW);
}

void loop() {
  sendtoa6("AT");
  if(getfroma6("OK")) {
//    sendtoa6("AT+CPIN?");
//    if(getfroma6("+CPIN:SIM PUK")) { fail; }         // If the required password is PUK, abort.
//    sendtoa6("AT+CPIN?");
//    if(getfroma6("+CPIN:SIM PIN2")) { fail; }        // If the required password is PIN2, abort.
//    sendtoa6("AT+CPIN?");
//    if(getfroma6("+CPIN:SIM PUK2")) { fail; }        // If the required password is PUK2, abort.

// WAIT FOR SWITCH RELEASE FIRST
    sendtoa6("AT+CPIN?");
    getfroma6("+CPIN:SIM PIN");                      // The last non-empty response will be stored in the global response variable. Problem with this: If the A6 module sends an unsolicitated message before the response to the CPIN command, nothing gets done and the card needs to be re-inserted again.
    if(strcmp(response, "OK") == 0) {                // If already no PIN is required

//      sendtoa6("AT+CLCK=\"SC\",2"); // Ist PIN-Abfrage eingeschaltet? Oder ist es "SC"?
//      if(getfroma6(???)) { PIN-Abfrage einschalten mit 0000; }

      // ENABLE PIN HERE
      d("I don't know how to enable the PIN.");

    }
    if(response = "+CPIN:SIM PIN") {                 // If the required password is PIN, continue.
      sendtoa6("AT^CPINC=?");
      if(getfroma6("^CPINC: 3")) {                   // If not exactly 3 attempts are left, abort. (should be larger than or equal to 3, shouldn't it?)
        sendtoa6("AT+CPIN=\"0000\"");                // Freischalten mit 0000
        delay(50);
        if(!getfroma6("OK")) { fail; }               // If that was not the right password, abort.
        sendtoa6("AT+CPWD=\"SC\",\"0000\",\"1996\"");// PIN ändern
        delay(500);
        if(getfroma6("OK")) { Serial.println("Looking good."); }

//      sendtoa6("AT+CMGD=0,4"); // Should delete all SMS
//      if(getfroma6(???)) { ; }
        d("I don't know how to delete SMS.");

        sendtoa6("AT+CPIN?");
        if(getfroma6("+CPIN:READY")) {
          
          // TURN OFF A& MODULE FOR SAFE CARD REMOVAL

          digitalWrite(successled, HIGH);
        }
      } else {                                         // If not exactly 3 times left
        fail;
      }
      delay(1000);
    }
  }
}

void fail() {
  digitalWrite(failled, HIGH);               // Turn red fail LED on and ...
  d("Something failed! Ending programme.");
  while(1);                                  // ... don't do anything anymore.
}

void wrongpin() {
  digitalWrite(wrongpinled, HIGH);           // Turn yellow LED on and ...
  d("Wrong PIN! Ending programme.");
  while(1);                                  // ... don't do anything anymore.
}

//boolean getfroma6(char str[32], char str1[32], char str1[32], char str1[32], char str1[32], char str1[32]) { // Returns true if the passed (expected) message was received, false if anything else was received.
boolean getfroma6(char str[32]) { // Returns true if the passed (expected) message was received, false if anything else was received.
  boolean asexpected = false;
    for (i = 1; i < 9; ++i) {
    receivelinefroma6();
//    d("d1 "+response);

    if(received[0] == '\0') {                            // If the received message is empty
      continue;
    } else {
      response = received;
    }
    if(strstr(received, "ERROR") != NULL) {              // If the received message contains "ERROR"
      d("Received an error: "+response);
      fail;
    }
    if(received[0] == '+') {                             // If the received message starts with a "+" sign
      d("Reseived response: "+response);
    } else {
      if(strstr(received, "OK") != NULL) {               // If the received message is "OK"
        d("Received OK.");
        asexpected = true;                               // Also treat OK like the expected message. No unexpected OK should ever be sent from the A6 module. So this is fine. No, it is, really.
//        if(asexpected) { return true; }
      } else {
        if(strncmp(received,"AT",2) == 0) {              // If the received message starts with "AT"
          d("Received AT: "+response);
        } else {                                         // For any other received message
          d("Received: "+response);
        }
      }
    }
    newData = false;
    if(strstr(received, str) != NULL) {
      d("Received expected message: "+response);
      asexpected = true;
    }
  }
  if(asexpected) { return true; }
  return false;
}


//void handleresponse() {
//  response = received;
//  if(received[0] == '+') {
//    d("               Response: "+response);
//  } else {
//    if(strstr(received, "OK") != NULL) {
//      d("               It's okay.");
//    } else {
//      if(strncmp(received,"AT",2) == 0) {
//        d("               I've sent: "+response);
//      }
//    }
//  }
//  newData = false;
//}



void receivelinefroma6() {
  delay(80);
  static byte counter = 0;
  char rc;
  
  received[0] = '\0';

  while (A6MODULE.available() > 0 && newData == false) {
    rc = A6MODULE.read();

    if (rc != '\n') {
      received[counter] = rc;
      counter++;
      if (counter >= maxmsglength) {
          counter = maxmsglength - 1;
      }
    }
    else {
      received[counter] = '\0'; // terminate the string
      counter = 0;
      newData = true;
    }
  }
}

void sendtoa6(String command) {
//  Serial.println(command);
  A6MODULE.println(command);
  d("Sent: "+command);
}

void d(String line) {
  if (debug == true) { Serial.println(line); }
}

(tba:connections,assembly,photos?)

Comment via email

I took a picture of an orange flower.

Entry created on 2022-02-19 (edited 2022-04-13) Authors: steeph (376) Categories: Flowers (3) Photos (29) edit
File Attachments (1 file)
orangeflower.jpeg (image/jpeg, 1571701 B)
orangeflower.jpeg (image/jpeg, 1571701 B)
Comment via email
Go To Navigation Page
Show/Hide Navigation
Mastodon