1
submitted 8 months ago by [email protected] to c/[email protected]

Only 2 buttons are actually connected, but they work well.

The duo comes without the connectors, so I had to solder some into it. It was a fun experience!

For the people who don't know the duo, it is a very little board (something like an alternative to the RPi Pico) that runs a RISC-V chip! I bought mine from Aliexpress in a pack with other stuff for like 10€.

Here is the underside of the gamepad thingy:

A picture showing the underside of the gamepad. It has wires soldered into it.

Not the best soldering job but it's to be expected since I don't have experience.

I also made a little program in C to test the buttons:

A picture showing a terminal window with " 'A' button has been pressed! " written several times on it.

Every time I press a specific button the program prints a string to the screen. When pressing the other wired button the program ends.


Here is the source code in case anyone is curious

#include 
#include 
#include 

#include 
#include 



/// It's t1 - t2, in seconds
double get_time_diff(struct timespec t1, struct timespec t2) {
    double a = (double)t1.tv_sec + (t1.tv_nsec / 1000000000.0);
    double b = (double)t2.tv_sec + (t2.tv_nsec / 1000000000.0);

    return a-b;
}

int main() {
    
    const int DEFAULT_COUNTER = 1;
    const double FRAME_TIME = 1.0 / 60.0;

    int BUTTON_A = 7;
    int BUTTON_B = 8;


    int A_high = 0;

    int A_pressed = 0;
    int A_just_pressed = 0;

    int A_counter = 0;


    int B_high = 0;

    int B_pressed = 0;
    int B_just_pressed = 0;

    int B_counter = 0;


    if(wiringXSetup("duo", NULL) == -1) {
        wiringXGC();
        return -1;
    }

    if(wiringXValidGPIO(BUTTON_A) != 0) {
        printf("Invalid GPIO %d\n", BUTTON_A);
    }
    if(wiringXValidGPIO(BUTTON_B) != 0) {
        printf("Invalid GPIO %d\n", BUTTON_B);
    }

    pinMode(BUTTON_A, PINMODE_INPUT);
    pinMode(BUTTON_B, PINMODE_INPUT);



    time_t init_time;
    time(&init_time);

    printf("Init time: %s\n", ctime(&init_time));

    struct timespec tick_start_time;
    timespec_get(&tick_start_time, TIME_UTC);
    struct timespec tick_end_time;
    timespec_get(&tick_end_time, TIME_UTC);


    // Start ncurses
    initscr();


    while(1) {
        
        timespec_get(&tick_start_time, TIME_UTC);

        if (get_time_diff(tick_start_time, tick_end_time) >= FRAME_TIME ) {
            
            // INPUT
            if (digitalRead(BUTTON_A) == HIGH) {

                if (A_high == 0) {
                    A_counter = DEFAULT_COUNTER;
                } else if (A_counter > 0) {
                    A_counter--;
                }
                
                A_high = 1;

                if (A_just_pressed == 1) {
                    A_just_pressed = 0;
                }

                if (A_counter <= 0) {

                    if (A_pressed == 0) {
                        A_just_pressed = 1;
                    }

                    A_pressed = 1;

                }
                
            } else {

                if (A_high == 1) {
                    A_counter = DEFAULT_COUNTER;
                } else if (A_counter > 0) {
                    A_counter--;
                }

                A_high = 0;

                if (A_counter <= 0) {
                    A_just_pressed = 0;
                    A_pressed = 0;
                }

            }

            if (digitalRead(BUTTON_B) == HIGH) {

                if (B_high == 0) {
                    B_counter = DEFAULT_COUNTER;
                } else if (B_counter > 0) {
                    B_counter--;
                }
                
                B_high = 1;

                if (B_just_pressed == 1) {
                    B_just_pressed = 0;
                }

                if (B_counter <= 0) {

                    if (B_pressed == 0) {
                        B_just_pressed = 1;
                    }

                    B_pressed = 1;

                }
                
            } else {

                if (B_high == 1) {
                    B_counter = DEFAULT_COUNTER;
                } else if (B_counter > 0) {
                    B_counter--;
                }

                B_high = 0;

                if (B_counter <= 0) {
                    B_just_pressed = 0;
                    B_pressed = 0;
                }

            }

            
            // UPDATE
            if (A_just_pressed == 1) {
                printw("'A' has just been pressed!\n");
            }
            if (B_just_pressed == 1) {
                // Exit the loop, which will end the program
                break;
            }

            refresh();
            timespec_get(&tick_end_time, TIME_UTC);
        }

    }

    // Stop ncurses
    endwin();

    return 0;
}


I hope someone finds this interesting! Thanks for reading.

37
submitted 8 months ago by [email protected] to c/[email protected]

I'm really curious to see it in action so I downloaded it. There are two versions, Nova Escritorio (Nova Desktop) and Nova Ligero (Nova Lite/Lightweight).

Curiously Nova Ligero seems to be only 200MB smaller than Nova Escritorio. (1.9GB vs 1.7GB)

Here's some download links in Pixeldrain, for faster download speeds and in case the original servers are down when you want to download.


Nova Escritorio 9.0https://pixeldrain.com/u/jf1TivHd


Nova Ligero 9.0https://pixeldrain.com/u/7SipXJ2b

1
Responsibilities (lemmygrad.ml)
submitted 8 months ago by [email protected] to c/[email protected]

This is how responsibilities make me feel most of the time. I know I should stop neglecting my responsibilities but it's just so hard for some reason...

I wonder if other people have a similar problem.

[-] [email protected] 16 points 9 months ago

Does the CPC actually believe in a two-state solution? To me it feels like they just want to stay out of conflicts but what would I know.

1
submitted 9 months ago by [email protected] to c/[email protected]
1
submitted 9 months ago by [email protected] to c/[email protected]

I'm not very good at reviewing stuff but I will do my best, if anyone knows a better methodology for a test or wants me to test something please tell me, I want these reviews to be the best they can be.


Post updates

  • 2023-10-09: Original version


Ordering the board

I ordered the 4GB RAM version board on June 2023 alongside a 5V 3A power supply, here's the breakdown of the costs:

  • Quartz64B 4GB SBC: $60
  • 5V 3A EU power supply: $7
  • Shipping to Spain: $12

Total: $79, $67 excluding shipping.

Unfortunately I don't remember how long it took to arrive.


Hardware

My board has a Rockchip RK3566, it has 4 Cortex A55 cores running up to 1.8GHz and it has 4GB LPDDR4 RAM.

I can see printed on the board that I got the V1.3 revision, and the date "2022_02_22" which I assume is the manufacturing date, curiously on "Twosday."

The board has 2 buttons on the side, close to the SD card slot. I think one is a power button and the other a reset button, but it's not very clear to me.

The board also has 2 LEDs, a green one signaling that the board has power and a blue one that blinks like a heartbeat signaling that the board is running. They are very bright, which is good in situations where there is a lot of ambient light but it can be annoying in low-light situations. At night when the lights are off it can very dimly light up a room, and the heartbeat LED is very noticeable in this situation. However it's not that big of a problem really, just slightly hard on the eyes when looking directly at the board.


The connectors of this board are:

  • 1x HDMI (Full size!)
  • 1x Gigabit Ethernet
  • 2x USB 2.0
  • 1x USB 3.0
  • 1x 3.5mm Audio Jack with mic input
  • 1x 3.5mm barrel power input (To power the board)
  • 1x SD Card slot

  • 1x 40 pin GPIO
  • 1x DSI port
  • 1x CSI port
  • 1x RTC port
  • 1x M.2 slot (1x PCIe Gen2)
  • 1x SPI Flash 128Mbit
  • 1x eMMC module slot


Software

Before anything else I think it's very important to point out that X11 doesn't seem to work properly with this board, I don't know if it's a software or hardware problem but it seems like other people have this same issue. If I want to use the board as a tiny Linux desktop I must use Wayland, which is quite a problem as the Desktop Environments that support Wayland happen to be quite resource intensive most of the time. XFCE is pretty much unusable even when it is quite lightweight due to this problem, as it only runs on X11 as far as I know. I have tried to install LabWC (a Window Manager very similar to OpenBox that runs on Wayland) on this board's build of Armbian but I can't figure out how to do it.

I'm saying this since that might be a deal breaker for some people.

The Linux distros that I have tried in this board are:

  • Armbian
  • Manjaro ARM
  • Plebian

Manjaro ARM has an image that comes with Sway, a Window Manager that runs on Wayland (so it doesn't have the X11 issues) and is quite lightweight. The Sway version comes configured in a fairly nice way, but it can see how someone could still find it awkward if they have never tried a tiling WM before.


Desktop usability

Currently I'm writing this post using the board, I'm running Gnome 44.3 on an Armbian build that originally came with XFCE. I'm using a 1080p 144Hz display and while I have seen some visual glitches the desktop runs fine as long as nothing resource intensive is going on.

Firefox is not very fluid, but it is usable. It depends a lot on what pages you have open. Lemmygrad runs fairly well, but pages such as YouTube are quite painful to use. An arbitrarily selected YouTube video running at 480p 30fps drops around 10% of its frames, and loading stuff takes quite a while. Things get better on Invidious but it's still sluggish.

LibreOffice Writer is usable but feels sluggish, especially when scrolling through a document.

Moving the mouse in circles over Firefox puts the CPU at around 60% which is kinda concerning. Not moving the mouse or typing makes the CPU idle at around 1-6%. Moving the mouse in circles over btop running on a foot terminal window puts the CPU at around 25%. All of this is in a display running at 144Hz.


Benchmarks and temperatures

  • 7z b

pic:7z b benchmark

The CPU seems to thermal throttle when approaching 70ºC, which probably explains why each consecutive result is lower than the one before it. I already have stuff to cool the board's chips on the way here, I will repeat these tests once they arrive.


Unfortunately the only other SBC I have is a Raspberry Pi 3B so I don't really have a point of reference to be able to tell if the board is worth it. I think the X11 issue is quite a problem that should be considered if you are eyeing this board.

If you think something about this review can be improved or you want me to test something feel free to comment.

[-] [email protected] 16 points 9 months ago

The undemocratic dissolution of the Soviet Union seems to be visible in the graph, on the World line.

[-] [email protected] 26 points 10 months ago

Expat / immigrant

[-] [email protected] 17 points 10 months ago

I'm an atheist but I think we should respect people's religious beliefs. If someone is a good socialist then it shouldn't matter if they are religious or not, being anti-religious will only make religious people avoid socialism for no real reason, we don't get anything by being anti-religious.

I mean, of course we shouldn't let religious institutions have power as they are usually quite reactionary, but the religious beliefs of people should be respected in my opinion.

[-] [email protected] 2 points 11 months ago* (last edited 11 months ago)

It's official education, here in Spain the course is called "Formación profesional de grado superior en integración social" I'm going private education (so I can study from home), though it isn't too expensive as it is in the US as we have a functional public education system private schools have to compete with. I have no idea what the equivalent of Formación profesional is in other countries.

Hope that helps!

Edit: Oh and yeah it is an actual job, at least I see it sometimes while scrolling through employment apps. (I forgor that part of the question lol)

[-] [email protected] 1 points 11 months ago

Apologies, I'm not sure what you mean 😅

27
submitted 11 months ago by [email protected] to c/[email protected]

I like helping people, and I think that due to my circumstances I would be able to understand more and be more empathetic towards the people I help once I (hopefully) complete my studies.

I hope working as a social integrator will make me feel fulfilled. Wish me luck.

47
submitted 11 months ago by [email protected] to c/[email protected]

Someone correctly pointing out that calling people fat is bad is downvoted, and someone called "literally_himmler1" replying with a nerd emoji is upvoted.

I am going to commit sudoku.

[-] [email protected] 11 points 11 months ago

I have played it a bit before, but I left the game since it was too hard to get into 😅

Learning curve is vertical

27
submitted 11 months ago by [email protected] to c/[email protected]

I'm in the PCPE, and they seem to focus a lot on educating and radicalizing people.

That is important of course, but I thought that organizing material support for people that needs it would not only actually improve the lives of people but also show the general population that "the commies" aren't some bloodthirsty monsters but instead actual people that want a better world.

What do you think? I think it's a good idea.

[-] [email protected] 4 points 11 months ago

I am definitely interested. I've had an itch for a multiplayer semi realistic civbuilding game since I started playing in the stoneworks Minecraft server. I've searched everywhere but I've never encountered a Minecraft server that satisfied the itch. This doesn't necessarily seem like it will go in a civbuilding direction but it still might scratch the itch anyway.

I've tried hosting a vintage story server on an sbc before and I'm pretty sure I saw somewhere in the command line the game going something like "no players are online, stopping clock". I'm sure it wasn't worded anywhere near like that but you get the idea, the game could already be doing the stopping time when no one is online thing by default.

Sorry for the formatting, I'm on my phone while taking a shit

1
ADHD moment (lemmygrad.ml)
submitted 11 months ago by [email protected] to c/[email protected]
[-] [email protected] 3 points 11 months ago

I think nowadays 8GB of RAM doesn't really make the cut anymore depending on the workload, but you should keep in mind that upgrading a CPU will most likely force you to upgrade your motherboard as well, since by that time there will be newer CPUs that your motherboard won't support. Upgrading RAM in the future will be less expensive as you can just use new RAM sticks alongside the ones you already have though it will probably affect performance if they are mismatched.

I think that having a fast CPU now will definitely be better on the long run, but that's just my opinion. There are probably other comrades more knowledgeable than me.

22
submitted 11 months ago* (last edited 11 months ago) by [email protected] to c/[email protected]

I'm liking it a lot, it's very barebones which is something I was looking for, and the package manager's command to install stuff is kinda hard to remember but does its job well. This might be my new daily driver now.

Only issue is that since it's not as popular as other distros finding information specific to Void Linux might be inconvenient.

Did any of you look into Void Linux? Do you like it?

9
Regla (lemmygrad.ml)
submitted 11 months ago by [email protected] to c/[email protected]
[-] [email protected] 13 points 11 months ago

Seems to have been already nuked, or at least I'm getting a 404 with the link provided.

71
submitted 11 months ago by [email protected] to c/[email protected]

So I've been thinking for a while about this subject, and I finally decided to make a post about this some time after I saw a YouTuber say what I put on the title of this post.

Thing is, I've noticed that very often young people and especially kids are treated as lesser beings, like if they were not humans beings with problems and lives of their own but just an annoyance that people have to keep up with.

I remember when I was a kid and I wanted to cross a zebra crossing cars would just pass by without stopping more often than not. Now that I'm an adult they stop pretty much every time. I suspect it was because they didn't want to stop for someone they consider to be lesser than them.

Also, a lot of people seem to think that being a kid means that you just play videogames or whatever all day, but don't these people remember when they were kids? I sure do. Going to school has been the worst thing I've ever had to endure. The only difference with having a job is that you don't get paid.

[-] [email protected] 34 points 11 months ago

Primarily China. Some western leftists can't understand that having markets doesn't mean a country isn't socialist.

view more: next ›

Spanish_Commie

joined 2 years ago
MODERATOR OF