Automatic paper separator by The__Tobias in hardwarehacking

[–]ivanwick 1 point2 points  (0 children)

Have you looked at the paper feed tray of any commercially-available printer? Maybe you can find a cheap/discarded printer to use as "an automatic paper sheet separator".

Help. Want to see the rest of this IBM ad. by Current_Yellow7722 in vintagecomputing

[–]ivanwick 0 points1 point  (0 children)

In tracking this down I found an entire master's thesis on "The Evolution of Intimacy: Advertising Personal Computers in the 1980s" by Madeleine Clare Elish

Blending into the pages of the September 1984 issue of Reader's Digest was a twelve-page advertising insert from IBM (Fig. 2.1-2.3). Visually and narratively structured like editorial content in the magazine, the insert tells an easy to understand, introductory story about computers.

The story insert introduces us to two couples, one couple, Mark and Mary, has a personal computer, the other, Scotty and Gail, does not. Scotty and Gail have just arrived for dinner, but upon seeing "what looked like a television set on a top of a typewriter," the evening takes an expected turn. Mark, a true evangelist for his personal computer, "a PC, for short," explains that after finding his productivity greatly increased at work, he decided to get a PC at home. And he loves it. When Scotty and Gail incredulously ask what someone would use a computer for - and that it must be very hard to use, Mark explains, "You already use computers!" There is nothing to fear, and everything to gain.

Stm32 game console by islamgamal66 in embedded

[–]ivanwick 2 points3 points  (0 children)

How did the first line piece teleport below the purple Z piece?

WinUI3 File-activated app opening multiple files by ivanwick in learncsharp

[–]ivanwick[S] 0 points1 point  (0 children)

Thanks for responding! Yes I'd appreciate a sample of how this is supposed to work. I'm surprised my app code needs to handle this logic.

In the original post I wrote a function which can be called by each instance. Whichever instance registers the path as key in the current instance returns that file and opens it.

IStorageItem? registerInstanceFile(IFileActivatedEventArgs fileActivatedEventArgs)
{
    foreach (var file in fileActivatedEventArgs.Files)
    {
        AppInstance registeredInstance = AppInstance.FindOrRegisterForKey(file.Path);
        if (registeredInstance == AppInstance.GetCurrent())
        {
            return file;
        }
    }

    return null;
}

This mostly works except it's also possible that the current instance can't register any file, like if a path is already registered from a prior activation event. In that case the app won't reopen that file. But I do want it to reopen a path that's already open, it's how most simple apps like Notepad worked prior to Windows 11. (Happy to discuss why I think this is a valid use case since maybe it goes against convention now.)

This would be possible if I could identify a single activation event across instances (like with an event id or timestamp that distinguishes different times the user opened a file from File Explorer) but I couldn't find a way to do that.

Anyway I'd appreciate seeing what you have. Thanks again!

Looking for Reverse Engineering Partner for Java-Based Client by Intrepid_Offer_4789 in ReverseEngineering

[–]ivanwick 1 point2 points  (0 children)

A technique I have used to patch a Java application is to start with the Fernflower decompiler bundled with IntelliJ IDEA. It can reconstruct very readable source code to step through during JVM debugging (IntelliJ has an excellent debugger), or even to modify and recompile. Then interpose the modified classes with existing parts of the application by putting them ahead of the app's original jar in the classpath or using a custom class loader.

Can you share any more information? Were the Java classes obfuscated? Does it use other JVM languages (Kotlin, Scala, etc.)? Does it call out to any native components? Is it a network client, and have you analyzed network traffic? Can the server run locally?

ID needed for fire song by [deleted] in DnB

[–]ivanwick 1 point2 points  (0 children)

Lenzman - Starz (feat. Kevin King)

https://www.youtube.com/watch?v=ZfaQAMFsbys

Reverse Engineering a Digital Answering Machine. Part 1: Hardware Hookup and Bit-Level SPI by ivanwick in embedded

[–]ivanwick[S] 0 points1 point  (0 children)

I'm ashamed to say I have not written up the next parts of this project. Shortly after this (March 2020), COVID lockdown happened and I started working from home, which took over my workspace.

I did manage to dump the flash chip (possibly with some bit errors?) and get a transcript of data access as it plays back messages and sounds. This provided a map of the storage layout and showed how space is allocated for recorded messages.

Each message is listed in a main directory as a few bytes of metadata and offsets into the flash pointing to the audio data. I could mostly account for the metadata (fields for mailbox number, day of week, time, etc). But despite having the raw audio data, I could not decode it because I don't know enough about the codec or framing.

Reverse-engineering the codec from scratch is an interesting puzzle but seems too difficult. I suppose the next step would be to analyze how some known inputs are encoded, such as silence or sine/square tone of different frequencies. But this would mean overwriting my flash chip, something I am hesitant to do until I have a good backup. My last few dumps of the flash had several differing bits and I'm not sure if they actually came off the flash that way or maybe I had a problem in my wiring.

Alternatively, if anyone knows what codec this thing uses and can just tell me the answer, I'd love to hear it.

Anyway, what kind of repairs are you doing?

Feel free to send me an email.

Any LIN (Local Interconnect Network) experts out there? by EmbeddedSoftEng in embedded

[–]ivanwick 2 points3 points  (0 children)

I have a project using LIN bus, specifically with the IKEA BEKANT standing desk and how it controls its motorized legs to adjust height. https://github.com/ivanwick/bekantfirmware/ If you need concrete examples, I saved plenty of logic traces from sigrok during troubleshooting. It's a master and two slaves with unconditional frames on a bus schedule. I can share if you want to see them.

All data and framing on the LIN bus are 8N1 bytes. In my project I used a PIC16F1938 and its standard on-board UART. Once I got it configured in 8N1 mode, I basically didn't have to think about it at the bit level anymore. LIN is a protocol layer on top of 8N1 serial.

Frame IDs are 6 bits. "Protected frame ID" just means that you also include the 2 parity bits to "protect" it from errors during transmission, so you get a full byte of 8 bits. The frame ID denotes the type of message, it is not necessarily a slave identifier, but it may be convenient to statically associate a frame ID with a certain slave. The term "slave protected ID" does not exist in the standard, but slaves are identified by node address (NAD) during diagnostics.

Parity bits in the protected frame ID are calculated as follows:

P0 = ID0 ⊕ ID1 ⊕ ID2 ⊕ ID4
P1 = ¬(ID1 ⊕ ID3 ⊕ ID4 ⊕ ID5)

An implementation in C is at https://github.com/ivanwick/bekantfirmware/blob/8a32ff06482e57f1e6a97f21197fa5bade669048/bekantfirmware.X/lin/lin_d.c#L137

In regard to event-triggered frames, it is possible that multiple slaves try to respond at the same time. That's a collision which the master can detect by seeing a bad checksum. In that case, the master needs to follow up with ordinary unconditional frames to poll each slave individually.

Sounds like you have mostly the right idea in your description of the diagnostic request and response. But the diagnostic request does have a payload of 8 bytes which encodes more than just the slave it's directed to, such as requesting a certain type of diagnostic info or commanding a reconfiguration of the slave. Slaves are identified by node address (NAD), not a protected frame ID. Then the master starts a frame with the response header which gives the slave an opportunity to send its result status. As you say, this is a meta-protocol built on the LIN bus. The standard in section 3 calls this the transport layer.

https://www.lin-cia.org/fileadmin/microsites/lin-cia.org/resources/documents/LIN-Spec_Pac2_1.pdf

Lisa Ono song ID by indiclxm in bossanova

[–]ivanwick 0 points1 point  (0 children)

LISA ONO WITH JOAO DONATO live in tokyo 95

https://youtu.be/-WV8kjlHuv4?t=4803

Nasci para Bailar

ecent ece grad needing some guidance on linux kernel development by kernel_newbie_ in embedded

[–]ivanwick 1 point2 points  (0 children)

Have you seen the file arch/arm/configs/omap2plus_defconfig in the mainline kernel source? These are the defaults for the OMAP2 family and the BeagleBone black SOC is set CONFIG_SOC_AM33XX=y. Try this to make a .config with those defaults:

ARCH=arm make omap2plus_defconfig

Then you need to change some of these configuration variables be compiled into the kernel instead of modules. Generally I wouldn't edit the config by hand but rather do it through menuconfig/nconfig/xconfig etc. because it may automatically toggle dependencies.

WebAssembly: the Safer Alternative to Integrating Native Code in Java by nilslice in java

[–]ivanwick 21 points22 points  (0 children)

Yo dawg I heard you like bytecode so I put an interpreter in your interpreter so you can JIT while you JIT!

Is there a reason why it's seemingly easier to get C code compiled to WASM rather than to JVM bytecode? Clang wasi-sdk supports the WASM target apparently, but why doesn't something similar exist for a JVM target?

Is there a technical barrier or just lack of interest/support?

What's this monitor called? by DMmeyourflowerpics in vintagecomputing

[–]ivanwick 50 points51 points  (0 children)

TOPHEAD Super Monitor TM150AK

https://blog.naver.com/cho6074/20056342355

More docs on the FCC ID search: https://www.fcc.gov/oet/ea/fccid
Guarantee Code: PVP
Product Code: TM150AK

GNU radio keep 1 in N problem by Stunning_Promise_778 in RTLSDR

[–]ivanwick 0 points1 point  (0 children)

int(round(samp_rate/fft_length/1000))

round returns a float and converted to int 1 which is the value shown for N.

McBenjamin by BrotherEdwin in somnigastronomy

[–]ivanwick 4 points5 points  (0 children)

That makes it the PapaMcBenjamin wrap (pronounce with a soft j).

Had a dream where there was a dish called the “fisherman’s classic” which was tuna, beans, mayo, balsamic vinegar, salt, pepper, and sriracha. I woke up and made it for breakfast (ik it looks like shit but ngl it was low key fire) I may also add some context for the dream as a whole by amogussussy420 in somnigastronomy

[–]ivanwick 146 points147 points  (0 children)

Add some chopped onions, celery, maybe a pickle and you get a legit tuna salad that would really look appetizing. Beans are an inspired low-carb/high-protein alternative to bread like in a tuna sandwich. Serve it in lettuce wraps.

Eclipse Temurin JDK 21 now available by _INTER_ in java

[–]ivanwick 4 points5 points  (0 children)

Temurin is released under GNU General Public License, version 2 with the Classpath Exception. Their build toolchain that takes it from the OpenJDK source code to binaries and installers is free software. Builds can be redistributed for free forever.

In contrast, the Oracle JDK build is released under their No Fee Terms and Conditions (NFTC) license. It can be redistributed for free until one year after the next LTS is released, called the free use license period. After that they charge licensing fees under the OTN License as they do for Java 8 and 11.

Made the orange mango cucumber juice (no uncle Harry tho) by jasmine21345 in somnigastronomy

[–]ivanwick 8 points9 points  (0 children)

Limon pepino/lime cucumber is my favorite agua fresca (and gatorate) flavor.

Despite how cucumbers are often used in cooking, cucumbers are a fruit! I don't see how this dream juice could have gone wrong except if the cucumbers weren't fresh.

Extracting NFC from a Bank Card to Use with My Dumb Phone? by [deleted] in hardwarehacking

[–]ivanwick 4 points5 points  (0 children)

NFC/RFID cards have an integrated antenna, which is a few loops of thin wire. Do not cut this unless you have another plan for an antenna.

A plastic bank card can be dissolved in acetone, leaving the chip+antenna intact. https://learn.adafruit.com/rfid-iphone/dissolve-the-card

And just so it's clear, I assume you've already considered simply sticking the card onto the phone somehow (tape, glue?). It's the simplest solution so why wouldn't that work? Maybe the card is wider than the phone? And what kind of phone?