Coder Social home page Coder Social logo

pr3y / bruce Goto Github PK

View Code? Open in Web Editor NEW
230.0 8.0 39.0 80.66 MB

Firmware for m5stack Cardputer, StickC and ESP32

License: GNU Affero General Public License v3.0

C++ 2.10% C 97.82% CMake 0.01% Processing 0.03% Python 0.01% Batchfile 0.01% Shell 0.01% HTML 0.05% Makefile 0.01%
bruce cardputer esp32-s3 hardware m5stack m5stack-cardputer m5stack-stickc offsec flipperzero

bruce's Introduction

Bruce Main Menu

๐Ÿฆˆ Bruce

Bruce is meant to be a versatile ESP32 firmware that supports a ton of offensive features focusing on facilitating Red Team operations. It also supports m5stack products and works great with Cardputer, Sticks and M5Cores.

๐Ÿ—๏ธ How to install

For m5stack devices

The easiest way to install Bruce is if you already use M5Launcher to manage your m5stack device, you can install it with OTA

Or you can burn it directly from the m5burner tool, just search for 'Bruce' (My official builds will be uploaded by "owner" and have photos.) on the device category you want to and click on burn

Alternatively, you can also download the latest binary from releases and flash locally using esptool.py

esptool.py --port /dev/ttyACM0 write_flash 0x00000 Bruce.bin

or use a web flasher like https://web.esphome.io/

โŒจ๏ธ Discord Server

Contact us in our Discord Server.

๐Ÿ“‘ Wiki

For more information on each function supported by Bruce, read our wiki here. Also, read our FAQ

๐Ÿ’ป List of Features

WiFi

  • Connect to WiFi
  • WiFi AP
  • Disconnect WiFi
  • WiFi Atks
    • Beacon Spam
    • Target Atk
      • Information
      • Target Deauth
      • EvilPortal + Deauth
    • Deauth Flood (More than one target)
  • TelNet
  • SSH
  • RAW Sniffer
  • DPWO-ESP32
  • Evil Portal
  • Scan Hosts
  • Wireguard Tun

BLE

  • BLE Beacon
  • BLE Scan
  • AppleJuice
  • SwiftPair
  • Android Spam
  • Samsung
  • SourApple
  • BT Maelstrom

RF

  • Scan/Copy
  • Custom SubGhz
  • Spectrum - @incursiohack
  • Jammer Full - @incursiohack
  • Jammer Intermittent - @incursiohack
  • Config
    • RF TX Pin
    • RF RX Pin
    • RF Module
    • RF Frequency
  • Replay

RFID

  • Read tag
  • Read 125kHz
  • Clone tag
  • Write NDEF records
  • Write data
  • Erase data
  • Save file
  • Load file
  • Emulate tag

IR

  • TV-B-Gone
  • IR Receiver
  • Custom IR (NEC, NEC42, NECExt, SIRC, SIRC15, SIRC20, Samsung32, RC5, RC5X, RC6)
  • Config
    • Ir TX Pin
    • Ir RX Pin

Others

  • Mic Spectrum
  • QRCodes
  • SD Card Mngr
  • SPIFFS Mngr
  • WebUI
    • Server Structure
    • Html
    • SDCard Mngr
    • Spiffs Mngr
  • Megalodon
  • BADUsb (New features, SPIFFS and SDCard)
  • Openhaystack

Clock

  • Clock

Config

  • Brightness
  • Dim Time
  • Orientation
  • UI Color
  • Clock
  • Sleep
  • Restart

โœจ Why and how does it look?

Bruce stems from a keen observation within the community focused on devices like Flipper Zero. While these devices offered a glimpse into the world of offensive security, there was a palpable sense that something more could be achieved without being that overpriced, particularly with the robust and modular hardware ecosystem provided by m5stack products.

Bruce Main Menu Bruce on M5Core Bruce on Stick

Other media can be found here.

๐Ÿ‘ Acknowledgements

  • @bmorcelli for new core and a bunch of new features.
  • @IncursioHack for adding RF and RFID modules features.
  • @Luidiblu for logo and UI design assistance.
  • @eadmaster for adding a lot of features.
  • Everyone who contributed in some way to the project, thanks โค๏ธ

๐Ÿšง Disclaimer

Bruce is a tool for cyber offensive and red team operations, distributed under the terms of the Affero General Public License (AGPL). It is intended for legal and authorized security testing purposes only. Use of this software for any malicious or unauthorized activities is strictly prohibited. By downloading, installing, or using Bruce, you agree to comply with all applicable laws and regulations. This software is provided free of charge, and we do not accept payments for copies or modifications. The developers of Bruce assume no liability for any misuse of the software. Use at your own risk.

bruce's People

Contributors

andmpo avatar bmorcelli avatar dev-cwsc avatar eadmaster avatar ethandupe avatar incursiohack avatar lamndev avatar luidiblu avatar metecicek avatar n1mb3 avatar niximkk avatar pr3y avatar rennancockles avatar tirichi-1894012 avatar valentin8709 avatar vitorsavian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bruce's Issues

probleme evil portal

bonjour j'ai tester l'evil portal il est super mais a des moment randome il me mes des caractรจre blizzard sur mon navigateur tel que :
P1: 1719561562
P2: 404
P3: 2
P4: hsopY03ZDj4DjAySJWbA0Rw1igPU+jWL1npy87eM382DjQnchwd5j5DV9qclTGUja3pFApk6H6PN/MVhdf8NPw==

capture d'รฉcran a l'appui
Uploading Capture dโ€™รฉcran 2024-06-21 154218.pngโ€ฆ
Uploading Capture dโ€™รฉcran 2024-06-21 154218.pngโ€ฆ

Battery isn't accurate.

The battery isn't accurate when scrolling or changing something on the screen the battery will randomly go up or down and sometimes it can be drastic it said it was at 50 then i changed into a page and it said 83.

Screen Always On

Hello, is it possible to create a standby screen option for all the FW that you have installed on the CP since it consumes quickly if it is on for a long time?

Question about RF and RFID

Which modules should i get to send and recieve radio frequencies and rfid? As i have seen bruce has features for both so i want the full experience. Thank you <3

IR NECext

Hello,
I see that in the PR #80 that the NECext protocol have been removed?
Why?
Thank you.

Unable to write RFID

reads really well RFID, but everytime I try to write it says "writing FAILED" on my both devices ( stickcplus2 and cardputer )

Enhancement: Can you add the universal remotes that are used in the flipper zero.

https://github.com/flipperdevices/flipperzero-firmware/tree/dev/applications/main/infrared/resources/infrared/assets

Here are the files that are used by the flipper zero. There are multiple power-off commands in the tv.ir file. I think that there is a script that sends all these power-off commands in the tv.ir file when the universal TV remote is used and when the power-off function is used in the universal AC remote it sends all the power-off commands in the AC.ir file and vice versa. So if you can create four scripts for the files (ac.ir , audio.ir , TV.ir , projector.ir) that sends all the power off commands when the power off function is selected and all the "volume +" commands when the "volume +" function is selected.

I think there are multiple power-off functions in one file because different devices use different protocols and different protocols can't be in one command. ( In a .ir file )

I hope this will be another cool feature in the next update.

Problรจme RF Spectrum

Bonjour,
J'ai un rf433r et lorsque j'essaie le "RF" (Spectrum) sur m5 stick c plus 2 cela ne fonctionne pas.
ร‡a redรฉmarre le programme Bruce.

A few requests

Hello dev team, I'd like to start by saying Bruce is my fav firmware for my cardputer. Great job.

While using your firmware for productivity purposes, I do have a few ideas and requests which I figure couldn't hurt to ask about.

First request is to put the BadUsb function into the main menu with the WiFi, and not in the others menu. It's a powerful tool and I think it is a major use for this firmware along side of the wifi functions.

Second request, is more of a few ideas.
Bruce is already so great and I think it has potential to be even more of a Swiss army knife, if we had more functions, like for instance:

-2fa token

-random password generator (which can automatically be saved into bad usb scripts)

-mouse jigger

-an added partition for data exfil badusb scripts

-travel router (probably not possible)

I understand I have no idea what I'm talking about so these are just some fun suggestions which I think would be awesome to add to the functionality of your awesome firmware.

Thanks for your time.

And thank you all for your work on this OS

Wi-Fi passwords list

A list of SSID:password made by the user to be used when trying to connect to a Wi-Fi network.
When a Wi-Fi network is required (like web UI) the user first select the network he wants to connect to then the script try to find the password for this network, if the password is found the script ask the user if he wants to use the saved password or a custom password. When user connects to a network and used a custom password, script ask the user if he wants to save this password.
Also when searching and saving passwords make sure it's always lower case (escape upper and lower).

JSON format ex:

{
    "ssid": "password",
    "home": "secret123456",
    "coffee shop": "99CoffeeShop"   
}

UK keyboard

Anyone managed to find a UK Keyboard layout, \ translates to # seems to be the main issue when using EN_US

Feature Suggestion : Deauth channel hopping..........+more

Finally the settings will be saved.
I flashed the firmware and it was way better than the previous one.

v1.3 easily makes this the best firmware for the m5stick.

I just got these ideas that I think will help:

  • Moving the "set time" functions of the clock to the "Config".
  • Clicking the clock icon displays the time. Without needing be reminded of the time every time it's been clicked.
  • The pause function on custom ir is great. It'll be better if it can be resumed too.
  • Making that raw sniffer to work without SD card (If possible).
  • Making the mic graph faster.
  • Bluetooth DDoS attack.
  • BLE badusb. (you can study the code from the portal.hack demo firmware).

Idea SD Card Show/Hide

Good morning,
Possible to have a logo of the SD card in the menu of the "Bruce" software once inserted and once removed in this case no more logo?

Thank you

RF Scan/Copy wont work

I was trying to test the new function Scan/Copy in the RF section but it wont work i have the rf433r unit plugged in but it wont read any rf signal, i dont know if im the only one having this issue. Thanks in advance for your great work.

Bruce customization

Hi,
Thank you for your work, it's really great !
I made a fork to customize and learn. I've fixed some things and added some features.

Here is my repo and actual state:

Only tested on M5StickC Plus2.

Fixes

  • set & display clock from RTC
  • UI bug fixes (like Wifi info drawn on top of the UI boders)
  • return to main menu fixed and added when missing
  • better shutdown to avoir rolling menu (code from M5 demo)
  • default brightness to 25% (little diff but much better battery life)

Customizations & features

WiFi

  • conect to default AP (hardcoded ssid / pwd) to avoid typing passphrase on M5StickC Plus 2
  • set password on WiFi AP, and display QRCode to connect to it (see in others)

BLE

  • simple BT connection (code from M5 demo)
  • WIP BT recon / scanner
  • test BT CVE (keyboard connection, mic recording etc.)

IR

  • new IR menu with its icon
  • move TV-B-Gone & custom IR here

FM

  • new FM menu with its icon
  • broadcast music
  • hijack traffic alerts like I did with a Raspberry Pi
  • others features with 433 / 868 Mhz modules (not received yet)

Palnagotchi

  • new Palnagotchi menu with its icon
  • WIP adapt code from viniciusbo in order to let M5StickC Plus 2 interacts with Pwnagotchi

Others

  • QRCodes display (code from Nemo)
  • Mic spectrum (code from M5 demo)
  • WIP QRCode to connect to default AP with password

I am just a beginner, but anyone can test and take my code if it helps :)

station deauther?

could you make it able to deauth both APs and stations, like @spacehuhns deauther?

rfid isnt writing

the firmware can read rfid and displays the infos, but when i try to write it says "writing failed"
hardware: m5stickc plus 1.1

Question BadUSB

Hi,
there is no badUSB with the Bruce software on the m5 stick c plus 2 why?
Thanks :)

RF analyser

I am working on this UI for spectrum on bruce

image

Bruce ver 1.1.0. m5stickc plus 2 the IR Tx pin will be forgotten

The ui color setting wasn't being saved on ver 1.0.2 but in the new version it'll be saved for some time and will get forgotten. There is a new issue that wasn't in the older version which is the firmware won't save the saved IR_TX pin. ( I set it to default on the m5stickc plus 2.)

port to a generic ESP32-S3 board with no lcd (headless mode)

In this branch i am trying to port Bruce for use with a generic ESP32-S3 board ("headless"=without LCD and buttons). Currently i'm using this one.

To keep the build as generic as possible, i'm planning to use:

  • a virtual display simulated on a smartphone using this lib. It allows to use the touchscreen for input, so no extra buttons are needed.
  • generic IR modules like these (should be compatible with the ones on M5Stack products, 0 code changes needed)
  • single-pinned modules like the FS1000A for RF (CC1101 should be easy to add in the future via SPI). Still 0 code changes needed.
  • builtin wifi and BT (should work without changes)
  • SD card disabled by default, maybe in the future could access storage from the smartphone directly
  • badusb may need reworking, maybe it's possible to use the 2nd usb port for it (need to investigate)

So the only parts that needs reworking actually are: the display, keyboard input, and badusb.

So far i'm getting the firmware bulding and drawing on my smartphone. Unfortunately the Vectordisplay lib lacks some drawing functions used by Bruce, so it is not rendering 100% correctly:

bruce

I also have to rewrite the input system to make use of the touchscreen, so this will take a while.

Another option is to expose all the firmware features via serial commands or the WebUI, and then write a custom Android app to use them for remote control, so no virtual display is needed.

Once i got this working correctly, it should make easier to extend support for other headless ESP32 boards from M5Stack, like the AtomS3 Lite, Capsule Kit, and even other generic ESP32 boards.

New feature: router keygen and default passwords tester

this may replace/extend the current DPWO feature, that only support a small set of routers.

This supports a lot more, including the "CLARO_" series
https://github.com/routerkeygen/routerkeygenPC

Another one for mobile broadband WIFI routers:
https://github.com/RealEnder/imeigen

In addition to this, there is also a db of default passwords that could be tried:
https://github.com/ihebski/DefaultCreds-cheat-sheet

I'm still looking for one that maps the router macaddresses...

TV-B Gone not working v1.1.0

Cardputer Bruce version 1.1.0 when going to the TV-B Gone menu, it opens the menu letting you select between regions, except without any inputs it jumps to "please wait" screen with loading bar and I cant get out of that screen unless I reset cardputer. It doesn't seem to send any IR signals either as TV wouldnt turn off (this same tv would turn off with NEMO tv-b gone version)

IR Replay

Hello, please could you add an IR replay feature that records and sends IR signals (and if possible, store them on SD)

RF spectrum not working

Unless I have not set up my receiver correctly, the rf function crashes often, and when it does work it freezes after 2 seconds.

Suggestions

add some templates for badusb and add ble support also make a folder here that has every bin of bruce
example:
brucecardputer.bin ect.
that will make it easier to use with m5launcher

Building the project does not work

Since I saw the project, I tried to modify it so that it suits me better, but building the project does not work for me, even without making any changes to the code. Here is the output I get (btw sorry for my bad English I am french) :

At first I click there then on build :

image

and I get this output :

*  Executing task: C:\Users\Ours\.platformio\penv\Scripts\platformio.exe run --environment m5stack-cardputer 

Processing m5stack-cardputer (platform: espressif32; board: m5stack-stamps3; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/m5stack-stamps3.html
PLATFORM: Espressif 32 (6.7.0) > M5Stack StampS3
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-builtin, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
 - framework-arduinoespressif32 @ 3.20014.231204 (2.0.14)
 - tool-esptoolpy @ 1.40501.0 (4.5.1)
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
 - toolchain-xtensa-esp32s3 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 46 compatible libraries
Scanning dependencies...
Dependency Graph
|-- WireGuard-ESP32 @ 0.1.5
|-- IRremoteESP8266 @ 2.8.6
|-- Time @ 1.6.1
|-- LibSSH-ESP32 @ 4.2.0
|-- PCA9554 @ 0.0.1
|-- ESPping @ 1.0.4+sha.2bf42df
|-- NTPClient @ 3.2.1
|-- Timezone @ 1.2.4
|-- ESP32Time @ 2.0.6
|-- LiteLED @ 1.2.0
|-- WiFi @ 2.0.0
|-- Wire @ 2.0.0
|-- EEPROM @ 2.0.0
|-- FS @ 2.0.0
|-- LittleFS @ 2.0.0
|-- SD @ 2.0.0
|-- SPI @ 2.0.0
|-- Bad_Usb_Lib
|-- utility
|-- TFT_eSPI @ 2.5.43
|-- ESP32 BLE Arduino @ 2.0.0
|-- DNSServer @ 2.0.0
|-- WebServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
Building in release mode
Compiling .pio\build\m5stack-cardputer\src\TV-B-Gone.cpp.o
Compiling .pio\build\m5stack-cardputer\src\bad_usb.cpp.o
Compiling .pio\build\m5stack-cardputer\src\ble_spam.cpp.o
Compiling .pio\build\m5stack-cardputer\src\clients.cpp.o
Compiling .pio\build\m5stack-cardputer\src\display.cpp.o
Compiling .pio\build\m5stack-cardputer\src\dpwo.cpp.o
Compiling .pio\build\m5stack-cardputer\src\evil_portal.cpp.o
Compiling .pio\build\m5stack-cardputer\src\globals.cpp.o
Compiling .pio\build\m5stack-cardputer\src\led.cpp.o
Compiling .pio\build\m5stack-cardputer\src\main.cpp.o
Compiling .pio\build\m5stack-cardputer\src\mfrc522_i2c.cpp.o
Compiling .pio\build\m5stack-cardputer\src\mykeyboard.cpp.o
Compiling .pio\build\m5stack-cardputer\src\openhaystack.cpp.o
Compiling .pio\build\m5stack-cardputer\src\rf.cpp.o
Compiling .pio\build\m5stack-cardputer\src\rfid.cpp.o
Compiling .pio\build\m5stack-cardputer\src\scan_hosts.cpp.o
Compiling .pio\build\m5stack-cardputer\src\sd_functions.cpp.o
Compiling .pio\build\m5stack-cardputer\src\settings.cpp.o
Compiling .pio\build\m5stack-cardputer\src\sniffer.cpp.o
Compiling .pio\build\m5stack-cardputer\src\tururururu.cpp.o
Compiling .pio\build\m5stack-cardputer\src\webInterface.cpp.o
Compiling .pio\build\m5stack-cardputer\src\wg.cpp.o
Compiling .pio\build\m5stack-cardputer\src\wifi_atks.cpp.o
Compiling .pio\build\m5stack-cardputer\src\wifi_common.cpp.o
Building .pio\build\m5stack-cardputer\bootloader.bin
Generating partitions .pio\build\m5stack-cardputer\partitions.bin
esptool.py v4.5.1
Creating esp32s3 image...
Merged 1 ELF section
Successfully created esp32s3 image.
Compiling .pio\build\m5stack-cardputer\libc31\WireGuard-ESP32\WireGuard.cpp.o
Compiling .pio\build\m5stack-cardputer\libc31\WireGuard-ESP32\crypto.c.o
Compiling .pio\build\m5stack-cardputer\libc31\WireGuard-ESP32\crypto\refc\blake2s.c.o
Compiling .pio\build\m5stack-cardputer\libc31\WireGuard-ESP32\crypto\refc\chacha20.c.o
Compiling .pio\build\m5stack-cardputer\libc31\WireGuard-ESP32\crypto\refc\chacha20poly1305.c.o
Compiling .pio\build\m5stack-cardputer\libc31\WireGuard-ESP32\crypto\refc\poly1305-donna.c.o
Compiling .pio\build\m5stack-cardputer\libc31\WireGuard-ESP32\crypto\refc\x25519.c.o
Compiling .pio\build\m5stack-cardputer\libc31\WireGuard-ESP32\wireguard-platform.c.o
Compiling .pio\build\m5stack-cardputer\libc31\WireGuard-ESP32\wireguard.c.o
Compiling .pio\build\m5stack-cardputer\libc31\WireGuard-ESP32\wireguardif.c.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\IRac.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\IRrecv.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\IRsend.cpp.o
In file included from .pio/libdeps/m5stack-cardputer/WireGuard-ESP32/src/wireguardif.c:51:
C:/Users/Ours/.platformio/packages/[email protected]/tools/sdk/esp32s3/include/tcpip_adapter/include/tcpip_adapter.h:15:2: warning: #warning "This header is deprecated, please use new network related API in esp_netif.h" [-Wcpp]
 #warning "This header is deprecated, please use new network related API in esp_netif.h"
  ^~~~~~~
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\IRtext.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\IRtimer.cpp.o
.pio/libdeps/m5stack-cardputer/WireGuard-ESP32/src/wireguardif.c: In function 'wireguardif_tmr':
.pio/libdeps/m5stack-cardputer/WireGuard-ESP32/src/wireguardif.c:868:5: warning: implicit declaration of function 'handshake_destroy'; did you mean 'keypair_destroy'? [-Wimplicit-function-declaration]
     handshake_destroy(&peer->handshake);
     ^~~~~~~~~~~~~~~~~
     keypair_destroy
.pio/libdeps/m5stack-cardputer/WireGuard-ESP32/src/wireguardif.c: In function 'wireguardif_init':
.pio/libdeps/m5stack-cardputer/WireGuard-ESP32/src/wireguardif.c:924:48: warning: passing argument 2 of 'tcpip_adapter_get_netif' from incompatible pointer type [-Wincompatible-pointer-types]
  tcpip_adapter_get_netif(TCPIP_ADAPTER_IF_STA, &underlying_netif);
                                                ^~~~~~~~~~~~~~~~~
In file included from C:/Users/Ours/.platformio/packages/[email protected]/tools/sdk/esp32s3/include/esp_netif/include/esp_netif.h:35,
                 from C:/Users/Ours/.platformio/packages/[email protected]/tools/sdk/esp32s3/include/tcpip_adapter/include/tcpip_adapter.h:16,
                 from .pio/libdeps/m5stack-cardputer/WireGuard-ESP32/src/wireguardif.c:51:
C:/Users/Ours/.platformio/packages/[email protected]/tools/sdk/esp32s3/include/tcpip_adapter/include/tcpip_adapter.h:95:72: note: expected 'void **' but argument is of type 'struct netif **'
 esp_err_t tcpip_adapter_get_netif(tcpip_adapter_if_t tcpip_if, void ** netif);
                                                                ~~~~~~~~^~~~~
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\IRutils.cpp.o
Archiving .pio\build\m5stack-cardputer\libc31\libWireGuard-ESP32.a
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Airton.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Airwell.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Aiwa.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Amcor.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Argo.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Arris.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Bosch.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Bose.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Carrier.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_ClimaButler.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Coolix.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Corona.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Daikin.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Delonghi.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Denon.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Dish.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Doshisha.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Ecoclim.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Electra.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_EliteScreens.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Epson.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Fujitsu.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_GICable.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_GlobalCache.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Goodweather.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Gorenje.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Gree.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Haier.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Hitachi.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Inax.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_JVC.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Kelon.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Kelvinator.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_LG.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Lasertag.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Lego.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Lutron.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_MWM.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Magiquest.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Metz.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Midea.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_MilesTag2.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Mirage.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Mitsubishi.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_MitsubishiHeavy.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Multibrackets.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_NEC.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Neoclima.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Nikai.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Panasonic.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Pioneer.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Pronto.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_RC5_RC6.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_RCMM.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Rhoss.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Samsung.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Sanyo.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Sharp.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Sherwood.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Sony.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Symphony.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Tcl.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Technibel.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Teco.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Teknopoint.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Toshiba.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Toto.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Transcold.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Trotec.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Truma.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Vestel.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Voltas.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Whirlpool.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Whynter.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Wowwee.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Xmp.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_York.cpp.o
Compiling .pio\build\m5stack-cardputer\lib411\IRremoteESP8266\ir_Zepeal.cpp.o
Compiling .pio\build\m5stack-cardputer\lib872\Time\DateStrings.cpp.o
Compiling .pio\build\m5stack-cardputer\lib872\Time\Time.cpp.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\agent.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\auth.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\base64.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\bignum.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\bind.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\bind_config.c.o
Archiving .pio\build\m5stack-cardputer\lib411\libIRremoteESP8266.a
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\buffer.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\callbacks.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\channels.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\client.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\config.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\config_parser.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\connect.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\crypto_common.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\curve25519.c.o
Archiving .pio\build\m5stack-cardputer\lib872\libTime.a
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\dh-gex.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\dh.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\dh_key.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\ecdh.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\ecdh_mbedcrypto.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\error.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\external\bcrypt_pbkdf.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\external\blowfish.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\getpass.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\getrandom_mbedcrypto.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\init.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\kdf.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\kex.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\knownhosts.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\libmbedcrypto.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\libssh_esp32.cpp.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\libssh_esp32_compat.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\log.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\match.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\mbedcrypto_missing.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\md_mbedcrypto.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\messages.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\misc.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\options.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\packet.c.o
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/libssh_esp32_compat.c:13:38: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
 #define LIBSSH_ESP32_COMPAT_USERNAME "root"
                                      ^~~~~~
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/libssh_esp32_compat.c:45:5: note: in expansion of macro 'LIBSSH_ESP32_COMPAT_USERNAME'
   { LIBSSH_ESP32_COMPAT_USERNAME, /* password: */"", LIBSSH_ESP32_COMPAT_UID,
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/libssh_esp32_compat.c:45:50: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
   { LIBSSH_ESP32_COMPAT_USERNAME, /* password: */"", LIBSSH_ESP32_COMPAT_UID,
                                                  ^~
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/libssh_esp32_compat.c:46:44: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
     LIBSSH_ESP32_COMPAT_GID, /* comment: */"", /* gecos: */"",
                                            ^~
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/libssh_esp32_compat.c:46:60: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
     LIBSSH_ESP32_COMPAT_GID, /* comment: */"", /* gecos: */"",
                                                            ^~
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/libssh_esp32_compat.c:22:37: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
 #define LIBSSH_ESP32_COMPAT_HOMEDIR "/spiffs"
                                     ^~~~~~~~~
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/libssh_esp32_compat.c:47:5: note: in expansion of macro 'LIBSSH_ESP32_COMPAT_HOMEDIR'
     LIBSSH_ESP32_COMPAT_HOMEDIR, /* shell: */"" };
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/libssh_esp32_compat.c:47:46: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
     LIBSSH_ESP32_COMPAT_HOMEDIR, /* shell: */"" };
                                              ^~
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\packet_cb.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\packet_crypt.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\pki.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\pki_container_openssh.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\pki_ed25519.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\pki_ed25519_common.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\pki_mbedcrypto.c.o
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/log.c: In function 'ssh_get_log_userdata':
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/log.c:239:12: warning: return discards 'volatile' qualifier from pointer target type [-Wdiscarded-qualifiers]
     return ssh_log_userdata;
            ^~~~~~~~~~~~~~~~
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\poll.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\scp.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\server.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\session.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\socket.c.o
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/misc.c: In function 'ssh_strerror':
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/misc.c:2004:8: warning: assignment to 'int' from 'char *' makes integer from pointer without a cast [-Wint-conversion]
     rv = strerror_r(err_num, buf, buflen);
        ^
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\string.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\threads.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\threads\mbedtls.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\threads\noop.c.o
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/scp.c: In function 'ssh_scp_new':
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/scp.c:110:5: warning: 'ssh_scp_free' is deprecated [-Wdeprecated-declarations]
     ssh_scp_free(scp);
     ^~~~~~~~~~~~
In file included from .pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/libssh/priv.h:181,
                 from .pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/scp.c:30:
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/libssh/libssh.h:567:32: note: declared here
 SSH_DEPRECATED LIBSSH_API void ssh_scp_free(ssh_scp scp);
                                ^~~~~~~~~~~~
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/scp.c: In function 'ssh_scp_free':
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/scp.c:303:9: warning: 'ssh_scp_close' is deprecated [-Wdeprecated-declarations]
         ssh_scp_close(scp);
         ^~~~~~~~~~~~~
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/scp.c:249:5: note: declared here
 int ssh_scp_close(ssh_scp scp)
     ^~~~~~~~~~~~~
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/scp.c: In function 'ssh_scp_push_file':
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/scp.c:577:5: warning: 'ssh_scp_push_file64' is deprecated [-Wdeprecated-declarations]
     return ssh_scp_push_file64(scp, filename, (uint64_t) size, mode);
     ^~~~~~
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/scp.c:472:5: note: declared here
 int ssh_scp_push_file64(ssh_scp scp, const char *filename, uint64_t size,
     ^~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/scp.c: In function 'ssh_scp_read':
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/scp.c:1009:9: warning: 'ssh_scp_accept_request' is deprecated [-Wdeprecated-declarations]
         rc = ssh_scp_accept_request(scp);
         ^~
.pio/libdeps/m5stack-cardputer/LibSSH-ESP32/src/scp.c:955:5: note: declared here
 int ssh_scp_accept_request(ssh_scp scp)
     ^~~~~~~~~~~~~~~~~~~~~~
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\token.c.o
Compiling .pio\build\m5stack-cardputer\lib99b\LibSSH-ESP32\wrapper.c.o
Compiling .pio\build\m5stack-cardputer\lib664\Wire\Wire.cpp.o
Compiling .pio\build\m5stack-cardputer\lib261\PCA9554\PCA9554.cpp.o
Archiving .pio\build\m5stack-cardputer\lib99b\libLibSSH-ESP32.a
Compiling .pio\build\m5stack-cardputer\lib6ce\WiFi\WiFi.cpp.o
Compiling .pio\build\m5stack-cardputer\lib6ce\WiFi\WiFiAP.cpp.o
Compiling .pio\build\m5stack-cardputer\lib6ce\WiFi\WiFiClient.cpp.o
Compiling .pio\build\m5stack-cardputer\lib6ce\WiFi\WiFiGeneric.cpp.o
Compiling .pio\build\m5stack-cardputer\lib6ce\WiFi\WiFiMulti.cpp.o
Compiling .pio\build\m5stack-cardputer\lib6ce\WiFi\WiFiSTA.cpp.o
Compiling .pio\build\m5stack-cardputer\lib6ce\WiFi\WiFiScan.cpp.o
Compiling .pio\build\m5stack-cardputer\lib6ce\WiFi\WiFiServer.cpp.o
Compiling .pio\build\m5stack-cardputer\lib6ce\WiFi\WiFiUdp.cpp.o
Compiling .pio\build\m5stack-cardputer\liba68\ESPping\ESPping.cpp.o
Compiling .pio\build\m5stack-cardputer\liba68\ESPping\ping32.cpp.o
.pio/libdeps/m5stack-cardputer/PCA9554/src/PCA9554.cpp: In member function 'bool PCA9554::twiRead(byte&)':
.pio/libdeps/m5stack-cardputer/PCA9554/src/PCA9554.cpp:17:46: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
       Wire.requestFrom(_SlaveAddress, 1, true);
                                              ^
In file included from .pio/libdeps/m5stack-cardputer/PCA9554/src/PCA9554.h:15,
                 from .pio/libdeps/m5stack-cardputer/PCA9554/src/PCA9554.cpp:1:
C:/Users/Ours/.platformio/packages/[email protected]/libraries/Wire/src/Wire.h:126:13: note: candidate 1: 'uint8_t TwoWire::requestFrom(int, int, int)'
     uint8_t requestFrom(int address, int size, int sendStop);
             ^~~~~~~~~~~
C:/Users/Ours/.platformio/packages/[email protected]/libraries/Wire/src/Wire.h:122:12: note: candidate 2: 'size_t TwoWire::requestFrom(uint8_t, size_t, bool)'     
     size_t requestFrom(uint8_t address, size_t len, bool stopBit);
            ^~~~~~~~~~~
.pio/libdeps/m5stack-cardputer/PCA9554/src/PCA9554.cpp:17:46: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
       Wire.requestFrom(_SlaveAddress, 1, true);
                                              ^
In file included from .pio/libdeps/m5stack-cardputer/PCA9554/src/PCA9554.h:15,
                 from .pio/libdeps/m5stack-cardputer/PCA9554/src/PCA9554.cpp:1:
C:/Users/Ours/.platformio/packages/[email protected]/libraries/Wire/src/Wire.h:126:13: note: candidate 1: 'uint8_t TwoWire::requestFrom(int, int, int)'
     uint8_t requestFrom(int address, int size, int sendStop);
             ^~~~~~~~~~~
C:/Users/Ours/.platformio/packages/[email protected]/libraries/Wire/src/Wire.h:120:13: note: candidate 2: 'uint8_t TwoWire::requestFrom(uint16_t, uint8_t, bool)'  
     uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop);
             ^~~~~~~~~~~
.pio/libdeps/m5stack-cardputer/PCA9554/src/PCA9554.cpp:17:46: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
       Wire.requestFrom(_SlaveAddress, 1, true);
                                              ^
In file included from .pio/libdeps/m5stack-cardputer/PCA9554/src/PCA9554.h:15,
                 from .pio/libdeps/m5stack-cardputer/PCA9554/src/PCA9554.cpp:1:
C:/Users/Ours/.platformio/packages/[email protected]/libraries/Wire/src/Wire.h:126:13: note: candidate 1: 'uint8_t TwoWire::requestFrom(int, int, int)'
     uint8_t requestFrom(int address, int size, int sendStop);
             ^~~~~~~~~~~
C:/Users/Ours/.platformio/packages/[email protected]/libraries/Wire/src/Wire.h:119:12: note: candidate 2: 'size_t TwoWire::requestFrom(uint16_t, size_t, bool)'
     size_t requestFrom(uint16_t address, size_t size, bool sendStop);
            ^~~~~~~~~~~
.pio/libdeps/m5stack-cardputer/PCA9554/src/PCA9554.cpp:17:46: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
       Wire.requestFrom(_SlaveAddress, 1, true);
                                              ^
In file included from .pio/libdeps/m5stack-cardputer/PCA9554/src/PCA9554.h:15,
                 from .pio/libdeps/m5stack-cardputer/PCA9554/src/PCA9554.cpp:1:
C:/Users/Ours/.platformio/packages/[email protected]/libraries/Wire/src/Wire.h:126:13: note: candidate 1: 'uint8_t TwoWire::requestFrom(int, int, int)'
     uint8_t requestFrom(int address, int size, int sendStop);
             ^~~~~~~~~~~
C:/Users/Ours/.platformio/packages/[email protected]/libraries/Wire/src/Wire.h:122:12: note: candidate 2: 'size_t TwoWire::requestFrom(uint8_t, size_t, bool)'     
     size_t requestFrom(uint8_t address, size_t len, bool stopBit);
            ^~~~~~~~~~~
Compiling .pio\build\m5stack-cardputer\libcd5\NTPClient\NTPClient.cpp.o
Archiving .pio\build\m5stack-cardputer\lib664\libWire.a
Compiling .pio\build\m5stack-cardputer\lib965\Timezone\Timezone.cpp.o
Archiving .pio\build\m5stack-cardputer\lib261\libPCA9554.a
Compiling .pio\build\m5stack-cardputer\lib0dc\ESP32Time\ESP32Time.cpp.o
Compiling .pio\build\m5stack-cardputer\lib405\LiteLED\LiteLED.cpp.o
Compiling .pio\build\m5stack-cardputer\lib73d\EEPROM\EEPROM.cpp.o
Archiving .pio\build\m5stack-cardputer\lib6ce\libWiFi.a
Archiving .pio\build\m5stack-cardputer\liba68\libESPping.a
Compiling .pio\build\m5stack-cardputer\lib2dd\FS\FS.cpp.o
Archiving .pio\build\m5stack-cardputer\lib965\libTimezone.a
Archiving .pio\build\m5stack-cardputer\libcd5\libNTPClient.a
Compiling .pio\build\m5stack-cardputer\lib2dd\FS\vfs_api.cpp.o
Compiling .pio\build\m5stack-cardputer\lib209\LittleFS\LittleFS.cpp.o
Compiling .pio\build\m5stack-cardputer\lib7bf\SPI\SPI.cpp.o
Archiving .pio\build\m5stack-cardputer\lib0dc\libESP32Time.a
Compiling .pio\build\m5stack-cardputer\lib1c3\SD\SD.cpp.o
Archiving .pio\build\m5stack-cardputer\lib405\libLiteLED.a
Compiling .pio\build\m5stack-cardputer\lib1c3\SD\sd_diskio.cpp.o
Compiling .pio\build\m5stack-cardputer\lib1c3\SD\sd_diskio_crc.c.o
Compiling .pio\build\m5stack-cardputer\lib423\Bad_Usb_Lib\KeyboardLayout_da_DK.cpp.o
Archiving .pio\build\m5stack-cardputer\lib73d\libEEPROM.a
Compiling .pio\build\m5stack-cardputer\lib423\Bad_Usb_Lib\KeyboardLayout_de_DE.cpp.o
Compiling .pio\build\m5stack-cardputer\lib423\Bad_Usb_Lib\KeyboardLayout_en_US.cpp.o
Compiling .pio\build\m5stack-cardputer\lib423\Bad_Usb_Lib\KeyboardLayout_es_ES.cpp.o
Compiling .pio\build\m5stack-cardputer\lib423\Bad_Usb_Lib\KeyboardLayout_fr_FR.cpp.o
Compiling .pio\build\m5stack-cardputer\lib423\Bad_Usb_Lib\KeyboardLayout_hu_HU.cpp.o
Compiling .pio\build\m5stack-cardputer\lib423\Bad_Usb_Lib\KeyboardLayout_it_IT.cpp.o
Compiling .pio\build\m5stack-cardputer\lib423\Bad_Usb_Lib\KeyboardLayout_pt_PT-BR.cpp.o
Compiling .pio\build\m5stack-cardputer\lib423\Bad_Usb_Lib\KeyboardLayout_pt_PT.cpp.o
Compiling .pio\build\m5stack-cardputer\lib423\Bad_Usb_Lib\KeyboardLayout_sv_SE.cpp.o
Compiling .pio\build\m5stack-cardputer\lib423\Bad_Usb_Lib\USBHID.cpp.o
Archiving .pio\build\m5stack-cardputer\lib209\libLittleFS.a
Archiving .pio\build\m5stack-cardputer\lib2dd\libFS.a
Compiling .pio\build\m5stack-cardputer\lib423\Bad_Usb_Lib\USBHIDKeyboard.cpp.o
Compiling .pio\build\m5stack-cardputer\libe37\utility\AXP192.cpp.o
Archiving .pio\build\m5stack-cardputer\lib7bf\libSPI.a
Compiling .pio\build\m5stack-cardputer\libe37\utility\Keyboard.cpp.o
Compiling .pio\build\m5stack-cardputer\libf19\SPIFFS\SPIFFS.cpp.o
Archiving .pio\build\m5stack-cardputer\lib1c3\libSD.a
Compiling .pio\build\m5stack-cardputer\lib09b\TFT_eSPI\TFT_eSPI.cpp.o
Archiving .pio\build\m5stack-cardputer\lib423\libBad_Usb_Lib.a
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLE2902.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLE2904.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEAddress.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEAdvertisedDevice.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEAdvertising.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEBeacon.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLECharacteristic.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLECharacteristicMap.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEClient.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEDescriptor.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEDescriptorMap.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEDevice.cpp.o
Archiving .pio\build\m5stack-cardputer\libe37\libutility.a
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEEddystoneTLM.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEEddystoneURL.cpp.o
Archiving .pio\build\m5stack-cardputer\libf19\libSPIFFS.a
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEExceptions.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEHIDDevice.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLERemoteCharacteristic.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLERemoteDescriptor.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLERemoteService.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEScan.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLESecurity.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEServer.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEService.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEServiceMap.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEUUID.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEUtils.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\BLEValue.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\FreeRTOS.cpp.o
Compiling .pio\build\m5stack-cardputer\libe21\BLE\GeneralUtils.cpp.o
Compiling .pio\build\m5stack-cardputer\lib37f\DNSServer\DNSServer.cpp.o
Compiling .pio\build\m5stack-cardputer\lib930\WebServer\Parsing.cpp.o
Compiling .pio\build\m5stack-cardputer\lib930\WebServer\WebServer.cpp.o
Compiling .pio\build\m5stack-cardputer\lib930\WebServer\detail\mimetable.cpp.o
Compiling .pio\build\m5stack-cardputer\lib4c7\ESPmDNS\ESPmDNS.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\Esp.cpp.o
Archiving .pio\build\m5stack-cardputer\lib09b\libTFT_eSPI.a
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\FirmwareMSC.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\FunctionalInterrupt.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\HWCDC.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\IPAddress.cpp.o
Archiving .pio\build\m5stack-cardputer\lib37f\libDNSServer.a
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\IPv6Address.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\MD5Builder.cpp.o
Archiving .pio\build\m5stack-cardputer\libe21\libBLE.a
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\Print.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\StreamString.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\USB.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\USBCDC.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\USBMSC.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\WMath.cpp.o
Archiving .pio\build\m5stack-cardputer\lib4c7\libESPmDNS.a
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\WString.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\base64.cpp.o
Archiving .pio\build\m5stack-cardputer\lib930\libWebServer.a
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\cbuf.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-adc.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-bt.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-cpu.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-dac.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-gpio.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-i2c-slave.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-i2c.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-ledc.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-matrix.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-misc.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-psram.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-rgb-led.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-rmt.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-sigmadelta.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-spi.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-time.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-timer.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-tinyusb.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-touch.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\esp32-hal-uart.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\firmware_msc_fat.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\libb64\cdecode.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\libb64\cencode.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\main.cpp.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\stdlib_noniso.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\m5stack-cardputer\FrameworkArduino\wiring_shift.c.o
C:/Users/Ours/.platformio/packages/[email protected]/cores/esp32/esp32-hal-uart.c: In function 'uartSetPins':
C:/Users/Ours/.platformio/packages/[email protected]/cores/esp32/esp32-hal-uart.c:153:9: warning: 'return' with no value, in function returning non-void
         return;
         ^~~~~~
C:/Users/Ours/.platformio/packages/[email protected]/cores/esp32/esp32-hal-uart.c:149:6: note: declared here
 bool uartSetPins(uint8_t uart_num, int8_t rxPin, int8_t txPin, int8_t ctsPin, int8_t rtsPin)
      ^~~~~~~~~~~
Archiving .pio\build\m5stack-cardputer\libFrameworkArduino.a
Linking .pio\build\m5stack-cardputer\firmware.elf
c:/users/ours/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: C:/Users/Ours/.platformio/packages/[email protected]/tools/sdk/esp32s3/lib\libnet80211.a(ieee80211_output.o): in function `ieee80211_raw_frame_sanity_check':
(.text.ieee80211_raw_frame_sanity_check+0x5c): multiple definition of `ieee80211_raw_frame_sanity_check'; .pio/build/m5stack-cardputer/src/wifi_atks.cpp.o:C:\Users\Ours\Desktop\Bruce-main/src/wifi_atks.cpp:22: first defined here
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\m5stack-cardputer\firmware.elf] Error 1
=============================================================================== [FAILED] Took 147.27 seconds ===============================================================================

Environment        Status    Duration
-----------------  --------  ------------
m5stack-cardputer  FAILED    00:02:27.266
=========================================================================== 1 failed, 0 succeeded in 00:02:27.266 ===========================================================================
 *  The terminal process "C:\Users\Ours\.platformio\penv\Scripts\platformio.exe 'run', '--environment', 'm5stack-cardputer'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it.

Could someone help me ?

Hi some feedback on the project

Hi so for the past week I've been using bruce 1.0.2 and here is the things that I've noticed

  • rf module support and spectrum feature
    I tried using it first with stx882 TX module and srt882s RX module and it didn't work so I switched to the module that you've mentioned in the supported module list (FS1000A RF433T) module and it didn't work too so that is the first problem

Note : based on my research any single pin protocol rf433mhz module is compatible with the cardputer because at it's core they all work the same by outputting or receiving digital/analog signal

  • RFID module support
    In this case also I used one of the modules that you've listed I used Mc rf522 and even after making sure that all the connections are done properly it didn't recognize it and I couldn't use the raid features so that needs fixing too

The last part is about the software

  • ui color change is not stored and after restart it resets

  • wardriving could be ported from marauder firmware it wouldn't bee a nice feature

  • better ir receiving and ir transmitting ui could be made or ported from known firmware

  • VPN client mode could be added by porting avaliable firmwares

Note : for better troubleshooting and experience note all the connections that are needed to be made for the modules in the wiki page so we can make sure that we did the same thing that you've done to get the module working

Thanks for the work it's really the greatest project on this thing the cardputer and we want to see it getting better and better ๐Ÿซก๐Ÿฅฐ

add CLI interface over serial, screensaver and keyboard shortcuts

cloning FlipperZero CLI, allow to quickly send cmds over serial.

e.g.

ir tx NEC 04000000 08000000

Currently WIP in my forked repo.

use cases:

  • quick debugging existing features without navigating the menus
  • remote control from a PC using a serial terminal or a python script
  • remote control from a smartphone using SerialManager

EDIT: just realised this needs -DARDUINO_USB_CDC_ON_BOOT=1 added to the platformio build flags to work correctly on the Cardputer.

125khz RFID tag reading functionality

It would be nice if Bruce could include RFID125khz tag reading with a Grove RFID UART module
https://wiki.seeedstudio.com/Grove-125KHz_RFID_Reader/

Working Example

#include <M5Cardputer.h>
#include <FastLED.h>

#define PIN_LED    21 // Builtin
#define PIN_RX      1
#define PIN_TX      2
#define NUM_LEDS    1

CRGB leds[NUM_LEDS]; // init RGB LED builtin
HardwareSerial RFIDSerial(1);  // UART1

unsigned char buffer[64];  // buffer array for data received over serial port
int count = 0;             // counter for buffer array

M5GFX &Display = M5Cardputer.Display;

void clearBufferArray() {
    for (int i = 0; i < count; i++) {
        buffer[i] = 0;
    }
}

void displayBuffer(unsigned char* buffer, int length) {

    // Reset Screen
    Display.fillRect(0, 67, 240, 70, TFT_BLACK);
    Display.setTextColor(TFT_WHITE);
    Display.setTextSize(1.4);

    // STX
    Display.setCursor(10, 67);
    Display.printf("STX: %02X", buffer[0]);


    // HEX
    Display.setCursor(10, 80);
    int halfLength = (length - 2) / 2;
    for (int i = 1; i < length - 1; i++) {  // data between STX and ETX
        if (i == halfLength + 1) {
            Display.setCursor(10, 93);
        }
        Display.printf("%02X ", buffer[i]);
    }

    // ETX
    Display.setCursor(10, 106);
    Display.printf("ETX: %02X", buffer[length - 1]);

    // ASCII
    M5Cardputer.Display.setTextColor(TFT_ORANGE);
    Display.setTextSize(1.1);
    Display.setCursor(55, 120);
    Display.printf("ASCII: .");
    for (int i = 1; i < length - 1; i++) {
        Display.printf("%c", buffer[i]);
    }
    Display.printf(".");

}
void setup() {
    // UART init
    RFIDSerial.begin(9600, SERIAL_8N1, PIN_RX, PIN_TX);

    // Cardputer Init
    auto cfg = M5.config();
    M5Cardputer.begin(cfg, true);
    Display.setRotation(1);
    Display.setTextColor(TFT_LIGHTGRAY);
    Display.setTextSize(2);
    
    // Display Title
    M5Cardputer.Display.drawRect(10, 10, 220, 40, TFT_LIGHTGRAY);
    M5Cardputer.Display.setTextColor(TFT_LIGHTGRAY);
    M5Cardputer.Display.setCursor(18, 18);
    M5Cardputer.Display.setTextSize(3.2);
    M5Cardputer.Display.printf("RFID 125KHZ"); 
    
    // Dislay Tag infos
    M5Cardputer.Display.setTextSize(1);
    M5Cardputer.Display.setCursor(68,55);
    M5Cardputer.Display.setTextColor(TFT_ORANGE);
    M5Cardputer.Display.printf("Waiting for tags");
    M5Cardputer.Display.setTextColor(TFT_LIGHTGRAY);

    // Builtin LED init
    FastLED.addLeds<WS2812, PIN_LED, GRB>(leds, NUM_LEDS);

}

void loop() {
    if (RFIDSerial.available()) {
        while (RFIDSerial.available()) {  // Read data
            buffer[count++] = RFIDSerial.read();  // Write data into buffer
            if (count == 64) break;
        }
        // Led & Buzzer
        M5Cardputer.Speaker.tone(5000, 20);
        leds[0] = CRGB::Green;
        FastLED.show();
        delay(20);
        FastLED.clear(true);
        
        // Screen
        displayBuffer(buffer, count); 
        clearBufferArray();
        count = 0;
    }

    delay(200); 

}

BLE doesn't work well.

Ble works its just very very slow like applejuice and sourapple is just slow before something pops up. (Im using ios btw)

Connecting rfid and other stuff

Hello everyone, please tell me how to connect RFID-RC522 to M5Stick CPlus1.1. Also I would like to know about connecting FS1000A and card reader, is it possible to make it all work together (Rfid, FS1000A transmitter and card reader)? Does anyone have connection diagrams?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.