Skip to content
View Barbaror4's full-sized avatar

Organizations

@OmfoBalkanMicroElectronics

Block or report Barbaror4

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
Barbaror4/README.md

BARBAROR4

Embedded Systems • Firmware • Reverse Engineering • Android • Audio DSP

Embedded Firmware Android Linux Budget


╔══════════════════════════════════════════════════════╗
║                    BARBAROR4                         ║
║                                                      ║
║   Hardware  /  Firmware  /  Android  /  Audio DSP   ║
║                                                      ║
║   "Elimde ne varsa onunla maksimumu çıkarmak."       ║
╚══════════════════════════════════════════════════════╝
barbaror4@github:~$ whoami

Elektronik, gömülü sistemler, firmware,
Android/Linux modlama ve reverse engineering
ile ilgilenen birisi.

barbaror4@github:~$ philosophy

> Bir cihaz çalışıyorsa nasıl çalıştığını öğren.
> Çalışmıyorsa neden çalışmadığını öğren.
> Zaten iyi çalışıyorsa daha ne yaptırabileceğine bak.

./about_me

Bir cihazı yalnızca kullanmak pek ilgimi çekmiyor.

Daha çok:

İçinde hangi SoC var?
Firmware nasıl çalışıyor?
Hangi protokolü kullanıyor?
Neden bu davranışı gösteriyor?
Datasheet'in söylemediği ne var?
Üreticinin koyduğu sınır nerede?
Bu donanımdan daha ne çıkarılabilir?

sorularının peşinden gitmeyi seviyorum.

Özellikle düşük maliyetli, eski veya az dokümante edilmiş donanımlar ilgimi çekiyor.

Çünkü bazen birkaç dolarlık bir cihazın içinde beklenmedik derecede yetenekli bir SoC, DSP, codec veya yeniden kullanılabilecek başka donanımlar çıkabiliyor.


./hardware

STM32      JieLi      NationalChip      Generalplus

STM32 ESP32 ESP8266

Başlıca ilgilendiğim platformlar:

STM32
├── STM32F103
├── STM32F411
└── STM32F746

Espressif
├── ESP32
└── ESP8266

Audio / Consumer SoCs
├── JieLi
├── NationalChip
└── Generalplus

./stm32

STM32 tarafında basit örneklerden çok, MCU'yu gerçek bir ürün gibi kullanmayı gerektiren projeleri seviyorum.

İlgilendiğim konulardan bazıları:

DMA
USB
USB Audio
USB Mass Storage
SDIO
SPI
I²C
UART
I²S
Ethernet
External Flash
Audio DSP
FFT
Touchscreen UI
Audio Playback
Real-time processing

Bir STM32'nin sadece:

HAL_GPIO_TogglePin(...);

yapmasından ziyade:

SD karttan dosya okuması,
MP3 decode etmesi,
DSP uygulaması,
USB Audio endpoint'i olması,
Ethernet'ten radyo stream etmesi,
ekranda FFT göstermesi

çok daha eğlenceli.


./audio

Audio DSP FFT USB Audio

Embedded audio özellikle en çok ilgilendiğim alanlardan biri.

MP3
WAV
FLAC

USB Audio
I²S
PWM Audio
Bluetooth Audio

FFT
Spectrum Analysis
Parametric EQ
Hardware EQ
Pitch Processing
Speed Processing

Stereo Recording
Internet Radio
Audio Codecs
DACs

Amacım genellikle:

"Bir ses dosyasını nasıl çalarım?"

değil.

Daha çok:

"Bu MCU'yu tam özellikli bir medya sistemine ne kadar yaklaştırabilirim?"


./projects

STM32F746G-DISCO Media Player

STM32F746 + WM8994 tabanlı medya oynatıcı projesi.

[+] SD Card
[+] exFAT
[+] USB Mass Storage

[+] USB Audio
[+] PC Mode

[+] Ethernet Internet Radio
[+] MP3
[+] WAV
[+] HE-AAC

[+] AUX Input
[+] Stereo Recording

[+] Parametric EQ
[+] WM8994 Hardware EQ

[+] FFT Visualizers
[+] Pitch Control
[+] Speed Control

[+] Touchscreen UI

Amaç:

"STM32F746'yı daha ne kadar zorlayabiliriz?"

STM32F411 Audio Player

Daha sınırlı kaynaklarla ses oynatma ve DSP denemeleri.

MCU        : STM32F411
Storage    : SDIO + SPI Flash
Audio      : MP3 / WAV
Output     : Stereo PWM
Display    : ST7789
DSP        : FFT
Experiments: USB Audio

Kısıtlı bir MCU üzerinde çalışan bir özellik bazen çok daha güçlü bir platformda aynı özelliği yapmaktan daha tatmin edici.


./jieli

JieLi SoC'leri özellikle ilgimi çekiyor.

AC69xx
Bluetooth Audio
USB Audio
Codec Support
Firmware SDKs
BR Platforms
Chip Identification
Firmware Analysis

Ucuz bir Bluetooth hoparlör, kulaklık veya USB-C ses cihazını açıp içinde beklenmedik şekilde güçlü bir JieLi SoC görmek benim için gayet iyi bir gün demek.


./obscure_soc_archaeology

barbaror4@bench:~$ scan-device

Device        : unknown
Chip marking  : barely readable
Documentation : almost nonexistent
SDK           : random archive from 2018
Language      : Chinese
Password      : probably 1111

STATUS: interesting

NationalChip, Generalplus, JieLi ve benzeri tüketici elektroniği SoC'lerinde:

  • firmware yapıları
  • boot süreçleri
  • SDK'lar
  • undocumented özellikler
  • codec desteği
  • çevre birimleri
  • cihaz tanımlama

gibi konuları araştırmayı seviyorum.

Dokümantasyon azaldıkça bazen ilgim artıyor.


./android

Android Linux Samsung

Android tarafında özellikle Samsung / Exynos cihazlarıyla ilgileniyorum.

Root
Custom Kernels
Kernel Tuning
Overclocking
Recovery
Firmware
ADB
Linux
Android Internals
System Modification
Hardware Modding

Telefonu sadece telefon olarak değil:

ARM Linux machine
+
display
+
battery
+
USB
+
Wi-Fi
+
Bluetooth
+
sensors
+
a ridiculous amount of undocumented hardware

olarak görmek daha eğlenceli.


./budget_engineering

barbaror4@bench:~$ ls equipment/

multimeter
ch341a
usb-uart
random-wires
old-hardware
datasheets
software-tools
questionable-chinese-sdks
barbaror4@bench:~$ ls expensive_lab_equipment/

ls: cannot access 'expensive_lab_equipment/': No such file or directory

😅

Osiloskop, logic analyzer veya pahalı profesyonel debug ekipmanlarım yok.

Bu yüzden mümkün olduğunca elimdekileri kullanıyorum:

UART logs
USB descriptors
ADB
Kernel logs
Software diagnostics
Multimeter
Datasheets
SDK source code
Firmware dumps
CH341A
Trial & error

Benim için güzel tarafı da burada.

Bir probleme:

"Hangi pahalı ekipmanı satın almalıyım?"

yerine:

"Elimdeki şeylerle bunu nasıl anlayabilirim?"

diye yaklaşmayı seviyorum.


engineering_philosophy.txt

Expensive != Interesting
New       != Better
Old       != Useless
Cheap     != Simple

Limited hardware + creativity > buying the solution

./tools

C C++ Python Git GitHub VS Code Code::Blocks STM32CubeIDE

languages:
  - C
  - C++
  - Python

ides:
  - STM32CubeIDE
  - Code::Blocks
  - Visual Studio Code

embedded:
  - STM32 HAL
  - ESP32
  - ESP8266

interfaces:
  - UART
  - USB
  - SPI
  - I2C
  - I2S
  - SDIO

debugging:
  - UART logs
  - ADB
  - Linux logs
  - USB descriptors
  - Multimeter
  - CH341A
  - Firmware dumps

software:
  - Git
  - GitHub
  - Linux
  - ADB
  - STM32CubeIDE
  - Code::Blocks

research:
  - Datasheets
  - SDK source code
  - Firmware analysis
  - SDK archaeology
  - Trial & error
barbaror4@bench:~$ tools --summary

Languages   : C, C++, Python
IDEs        : STM32CubeIDE, Code::Blocks, VS Code
Platforms   : STM32, ESP32, ESP8266
Debugging   : UART, ADB, logs, multimeter, CH341A
Specialty   : firmware, embedded audio, reverse engineering
Lab budget  : yes
Creativity  : also yes

./currently_interested_in

[0x01] Embedded Audio
[0x02] STM32
[0x03] JieLi SoCs
[0x04] Firmware Reverse Engineering
[0x05] Android Kernels
[0x06] Samsung / Exynos
[0x07] USB Internals
[0x08] Audio DSP
[0x09] Obscure SoCs
[0x0A] Old Hardware
[0x0B] Reusing Cheap Electronics
[0x0C] Finding out what happens if I do this...

./stats



./contributions

Contribution Snake

main.c

#include <stdint.h>

int main(void)
{
    while (1)
    {
        if (device_is_unknown())
        {
            identify_chip();
            dump_firmware();
            find_sdk();
            read_datasheet();
        }

        if (device_works())
        {
            understand_it();
            modify_it();
            push_it_further();
        }
        else
        {
            debug_until_it_does();
        }
    }
}

Hardware is more fun when you're not supposed to touch it.

STM32 • JieLi • Firmware • Android • DSP • Reverse Engineering

Pinned Loading

  1. OmfoBalkanMicroElectronics/MagicPIC OmfoBalkanMicroElectronics/MagicPIC Public archive

    PIC16F886 MCU çipini daha kolay şekilde kullanılabilir,programlanabilir bir hale getirmek,hazır örnek kodlar vermek.

    C