Byla vydána nová verze 24.04.28 s kódovým názvem Time After Time svobodného multiplatformního video editoru Shotcut (Wikipedie) a nová verze 7.24.0 souvisejícího frameworku MLT Multimedia Framework. Nejnovější Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.
Byla vydána verze 5.30 dnes již open source operačního systému RISC OS (Wikipedie).
V aktuálním příspěvku na blogu počítačové hry Factorio (Wikipedie) se vývojář s přezývkou raiguard rozepsal o podpoře Linuxu. Rozebírá problémy a výzvy jako přechod linuxových distribucí z X11 na Wayland, dekorace oken na straně klienta a GNOME, změna velikosti okna ve správci oken Sway, …
Rakudo (Wikipedie), tj. překladač programovacího jazyka Raku (Wikipedie), byl vydán ve verzi #171 (2024.04). Programovací jazyk Raku byl dříve znám pod názvem Perl 6.
Společnost Epic Games vydala verzi 5.4 svého proprietárního multiplatformního herního enginu Unreal Engine (Wikipedie). Podrobný přehled novinek v poznámkách k vydání.
Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.
Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.
Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.
Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.
Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <usb.h> void usage() { fprintf(stderr, "Usage: yakumo-repair <old_vid:old_pid> <new_vid:new_pid>\n"); fprintf(stderr, "You have to download Vend_ax.hex (using e.g. cycfx2prog) first!\n"); exit (-1); } unsigned int vid_o, pid_o, vid_n, pid_n; void repair (struct usb_device *dev, usb_dev_handle *h) { unsigned char buffer[256], b2[256]; int i,n,ok; n=usb_control_msg(h, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 0xa2, 0, 0, (char *)buffer, sizeof(buffer), 5000); printf ("EEPROM READ: [%d]\t", n); if (n) for (i=0; i<n; i++) { printf(" %02x", buffer[i]); } printf ("\n"); if (n!=256) { fprintf (stderr, "Error reading EEPROM!\n"); return; } if ( (buffer[1]==(vid_o%0x100)) && (buffer[2]==(vid_o/0x100)) && (buffer[3]==(pid_o%0x100)) && (buffer[4]==(pid_o/0x100)) ) { printf ("... old VID/PID OK! Trying to overwrite VID/PID in EEPROM...\n"); // set new VID/PID into the buffer! buffer[0]=0xc0; buffer[1]=(vid_n%0x100); buffer[2]=(vid_n/0x100); buffer[3]=(pid_n%0x100); buffer[4]=(pid_n/0x100); n=usb_control_msg(h, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, 0xa2, 0, 0, (char *)buffer, 5, 5000); printf ("... written %d bytes...\n", n); printf ("Verifying...\n"); n=usb_control_msg(h, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 0xa2, 0, 0, (char *)b2, sizeof(b2), 5000); if (n!=256) { fprintf (stderr, "Error reading EEPROM!\n"); return; } ok=1; for (i=0; i<n; i++) if (buffer[i]!=b2[i]) ok=0; printf (ok?"Verified, OK!\n":"Error occured!\n"); } else fprintf (stderr, "VID/PID in EEPROM don't match! Skipping..."); } int main (int argc, char **argv) { struct usb_bus *bus; struct usb_device *dev; usb_dev_handle *handle = NULL; if (argc!=3) usage(); sscanf(argv[1], "%x:%x", &vid_o, &pid_o); sscanf(argv[2], "%x:%x", &vid_n, &pid_n); if ((vid_o>0xffff) || (pid_o>0xffff) || (vid_n>0xffff) || (pid_n>0xffff)) usage(); printf ("\nRepairing: [%04x:%04x] => [%04x:%04x]\n\n", vid_o, pid_o, vid_n, pid_n); usb_init(); usb_find_busses(); usb_find_devices(); for (bus=usb_get_busses(); bus; bus=bus->next) { for (dev=bus->devices; dev; dev=dev->next) { if ((dev->descriptor.idVendor==vid_o) && (dev->descriptor.idProduct==pid_o)) { handle=usb_open(dev); if (!handle) printf("Error opening [%04x:%04x]!\n", vid_o, pid_o); else { printf("Found [%04x:%04x]: trying to repair ----------------\n", vid_o, pid_o); repair(dev, handle); } } } } return 0; }V adresáři rovněž vytvoříme soubor Makefile a do něj dáme:
BIN=/usr/bin USBFLAGS = `libusb-config --cflags` USBLIBS = `libusb-config --libs` CC = gcc CFLAGS = $(USBFLAGS) -O3 -Wall LIBS = $(USBLIBS) PROGRAM=yakumo-repair all: $(PROGRAM) .c.o: $(CC) $(CFLAGS) -c $< $(PROGRAM): $(PROGRAM).o $(CC) -o $(PROGRAM) $(PROGRAM).o $(LIBS) strip: $(PROGRAM) strip $(PROGRAM) install: strip cp -f $(PROGRAM) $(BIN) clean: rm -f *.o $(PROGRAM)Program zkompilujeme pomocí 'make'.
./cycfx2prog -id=14ee:0225 prg:Vend_ax.hex runProgram vypíše něco jako:
Using ID 14ee:0226 on 001.014. Putting 8051 into reset. Programming 8051 using "Vend_ax.hex". Putting 8051 out of reset.Poté spustíme náš program se dvěma parametry: prvním je současný (nekorektní) pár VID/PID, druhým je opravený VID/PID:
./yakumo-repair 14ee:0225 14aa:0225Program vypíše:
Repairing: [14ee:0225] => [14aa:0225] Found [14ee:0225]: trying to repair ---------------- EEPROM READ: [256] c0 ee 14 25 02 00 00 08 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ... old VID/PID OK! Trying to overwrite VID/PID in EEPROM... ... written 5 bytes... Verifying... Verified, OK!Což znamená, že v tomto okamžiku by mělo být vše v pořádku, stačí adaptér odpojit a znovu zapojit a měl by znovu fungovat.
Tiskni Sdílej:
odcihleníRDAA-81 pomocí JTAGu po těch peripetiích i napíšu, ale jak se dívám tak jsem pořád slabé máslo a ještě budu muset počkat na corovější zážitky.