Git Product home page Git Product logo

rfcat's Introduction

Welcome to the rfcat project

Table of Contents

GOALS

The goals of the project are to reduce the time for security researchers to create needed tools for analyzing unknown targets, to aid in reverse-engineering of hardware, and to satiate my rf lust.

REQUIREMENTS

RfCat currently requires Python 2.7. the only suspected incompatibilities with Python 3.x are minimal, mostly print("stuff") versus print "stuff" and other str/bytes issues.

Other requirements

  • python usb
  • libusb - should be able to work with either 1.x or 0.1 versions. please let us know if you run into issues.
  • pyreadline (especially for Windows)
  • PySide2 (for Spectrum Analyzer GUI): (Ubuntu 18.10+: python-pyside2) PySide2 is no longer installed automatically, due to support concerns for RPi platforms. You can install it (if available for your platform) using pip: $ sudo pip install PySide2

Build requirements

  • Make
  • SDCC

DEVELOPMENT

New development efforts should copy the "application.c" file to "appWhateverMyToolIs.c" and attempt to avoid making changes to other files in the repo if at all possible. that is only a recommendation, because future bug-fixes in other libraries/headers will go much more smoothely for you.

Gotchas

A couple gotchas to keep in mind while developing for the cc1111

  • The memory model includes both "RAM" and "XDATA" concepts, and standard RAM variables and XDATA variables have different assembly instructions that are used to access them. this means that you may find oddities when using a function written for XDATA on a standard RAM variable, and vice-versa.
  • Variables should be defined in a single .c file, and then "externs" declared in a .h file that can be included in other modules. this is pretty standard for c programs, but both this and the previous point caused me difficulties at some points, and i found myself unsure what was causing my troubles.
  • RAM memory is not cheap. use it sparingly.
  • You need to set the radio into IDLE mode before reconfiguring it
  • You need to set the radio into TX mode before writing to the RFD register (firmware) as it is a 1-byte FIFO.

INSTALLING ON HARDWARE

Installing and getting up to speed with rfcat...

First things first. Using rfcat requires that you either use the python client in root mode (sudo works well), or configure udev to allow non-root users full access to the dongle. you must also have one of the supported dongles flashed with the necessary application firmware.

allowing non-root dongle access

sudo cp etc/udev/rules.d/20-rfcat.rules /etc/udev/rules.d
sudo udevadm control --reload-rules

Please make sure any user accounts you want to allow access to the RfCat dongle are members of the dialout group.

This tool is created, maintained, and used primarily on linux. make and sdcc must be installed for creating new firmware and some of the helper functions we provide through make.

supported dongles

  • YARDStick One
  • cc1111emk (aka DONSDONGLES)
  • chronos watch dongle (aka CHRONOSDONGLE)
  • imme (limited support for both IMME and IMMEDONGLE)
    • imme dongle is not really usable as of 1/31/2012

GoodFET


            --------------------------------
            |                         1  2 |
            |                         3  4 |
       ------                         5  6 |  
       | USB                          7  8 |
       ------                         9 10 |
            |                        11 12 |
            | GoodFET                13 14 |
            --------------------------------

Chronos Dongle

            --------------------------------
            |                              |
            |             RST 1  2 TP      ------
            |             GND 3  4 VCC      USB |
            |         DC/P2_2 5  6 DD/P2_1 ------
            | Chronos                      |
            --------------------------------

               GoodFET            Chronos           GreatFET            Chronos
                 PIN                PIN              PIN                  PIN

                  1 <----- DD -----> 6              J1.37 <----- DD -----> 6
                  2 <----- VCC ----> 4               J1.2 <----- VCC ----> 4
                  5 <----- RST ----> 1              J1.40 <----- RST ----> 1
                  7 <----- DC -----> 5              J1.39 <----- DC -----> 5
                  9 <----- GND ----> 3               J1.1 <----- GND ----> 3

EMK Dongle

            --------------------------------
            | 2 4 6 8 10   2 4 6 8 10      |
            | 1 3 5 7 9    1 3 5 7 9       |
            |-TEST-PINS----DEBUG-PINS------|
            |                              |
       ------                              |
       | USB                               |
       ------                              |
            | Don's Dongle (EMK)           |
            --------------------------------

               GoodFET              EMK               GreatFET             EMK  
                 PIN             DEBUG PIN              PIN            DEBUG PIN

                  1 <----- DD -----> 4              J1.37 <----- DD -----> 4
                  2 <----- VCC ----> 2               J1.2 <----- VCC ----> 2
                  5 <----- RST ----> 7              J1.40 <----- RST ----> 7
                  7 <----- DC -----> 3              J1.39 <----- DC -----> 3
                  9 <----- GND ----> 1               J1.1 <----- GND ----> 1

YARD Stick One

Pogo pads on the back are clearly marked, but if you want to use the header...

            -----------------------------------------
            | YARD Stick One      2 4 6 8 10 12 14  |
            |                     1 3 5 7 9  11 13  ------
            |                                        USB |
            |                                       ------
            |                                       |
            -----------------------------------------

    
               GoodFET           YARD Stick One       GreatFET           YARD Stick One
                 PIN                 PIN               PIN                 PIN

                  1 <----- DD -----> 1               J1.37 <----- DD -----> 1
                  2 <----- VCC ----> 2                J1.2 <----- VCC ----> 2
                  5 <----- RST ----> 5               J1.40 <----- RST ----> 5
                  7 <----- DC -----> 7               J1.39 <----- DC -----> 7
                  9 <----- GND ----> 9                J1.1 <----- GND ----> 9

INSTALLING WITH BOOTLOADER

Steps required for all firmware installs and updates

You will also need to install the build requirements of python-usb, libusb-1.0.0, make, and sdcc.

  • python-usb
  • libusb-1.0.0
  • make
  • sdcc
sudo apt install python-usb libusb-1.0.0 make sdcc

For sdcc and its dependency, sdcc-libraries, you may need to download it from a earlier release's repository if you are on a newer version of Debian or Ubuntu such as:

Next, your user must have read/write access to the dongle when it shows up to the operating system.
For most Linux distros, this means you have to be a member of the "dialout" group.

usermod -a -G sudo $USER
su - $USER

You will also need permanent symlinks to the USB serial devices that will communicate with the CHRONOS, DONSDONGLE or YARDSTICKONE bootloader when required. If you haven't done this step already (see above), then run:

sudo cp etc/udev/rules.d/20-rfcat.rules /etc/udev/rules.d
sudo udevadm control --reload-rules

Steps for bootloader + firmware installs via hardware debugger

To prepare your dongle for the first time, you'll need to hook up your debugger as described above

Intended development model is using a GoodFET although one of our developers uses the chipcon debugger from Texas Instruments.

cd rfcat/firmware/
make testgoodfet

This will read info from your dongle using the GoodFET. you should see something like:

SmartRF not found for this chip.
Ident   CC1111/r1103/ps0x0400
Freq         0.000 MHz
RSSI    00
  • make backupdongle will read the current firmware from your dongle to the file .../bins/original-dongle-hex.backup. (make restoredongle) to revert to the original firmware.
  • make clean installRfCatChronosDongle will clean, build, and install the RfCat (appFHSSNIC.c) firmware for a Chronos dongle.
  • make clean installRfCatDonsDongle will clean, build, and install the RfCat (appFHSSNIC.c) firmware for a cc1111emk.
  • make clean installimmesnifffw will clean, build, and install the RfSniff firmware for the IMME girls toy from girltech

Dependencies: Fergus Noble's CC-Bootloader (slightly modified). For your convenience, hex files are provided in the CCBootloader sub-directory in firmware.

Source can be found here

Which is branched from here

and do:

(install rfcat_bootloader from the CC-Bootloader subdirectory to somewhere on your execution path)

cd firmware

for EMK/DONSDONGLE: make installdonsbootloader

for CHRONOS: make installchronosbootloader

for YARDSTICKONE: make installys1bootloader

now unplug the debugger and plug in your USB dongle.

If you have just installed the bootloader, the dongle should be in bootloader mode, indicated by a solid LED.

Steps for firmware updates via USB port

If you are re-flashing a dongle that is already running rfcat firmware, such as a YarstickOne, the Makefile targets will force it into bootloader mode for you, but you can manually put it into bootloader mode either by holding down the EMK/DONS button as you plug it into USB (on the CHRONOS or YARDSTICKONE jumper P2_2/DC to GROUND), or by issuing the command d.bootloader() to rfcat in interactive mode (rfcat -r), or by issuing the command rfcat --bootloader --force from the command line.

Once you have a solid LED, or if you're running an rfcat dongle, you can do the following:

cd firmware

for EMK/DONSDONGLE:

  • make installRfCatDonsDongleCCBootloader

for CHRONOS:

  • make installRfCatChronosDongleCCBootloader

for YARDSTICKONE:

  • make installRfCatYS1CCBootloader

The new version will be installed, and bootloader exited.

Installing client

Dependencies

  • python-usb
  • libusb

Install rfcat onto your system. on most linux systems, this will place rfcat and rfcat_server in /usr/local/bin/ and rflib into /usr/*/lib/python2.x/dist-packages

Installation

  • cd into the rfcat directory (created by unpacking the tarball or by git clone)
  • sudo python setup.py install
  • I highly recommend installing ipython
    • For deb/ubuntu folk: apt-get install ipython

Installation with pip

  • cd into the rfcat directory (created by unpacking the tarball or by git clone)
  • pip install -e . (installs in editable mode and runs from the unpacked or checked out location)

Using rfcat

If you have configured your system to allow non-root use:

  • type "rfcat -r" (if your system is not configured to allow non-root use, prepend "sudo" or you must run as root) you should have now entered an interactive python shell, where tab-completion and other aids should make a very powerful experience i love the raw-byte handling and introspection of it all.

  • try things like:

    • d.ping()
    • d.discover()
    • d.debug()
    • d.RFxmit('blahblahblah')
    • d.RFrecv()
    • print(d.reprRadioConfig())
    • d.setMdmDRate(19200) # this sets the modem baud rate (or DataRate)
    • d.setPktPQT(0) # this sets the preamble quality threshold to 0
    • d.setEnableMdmFEC(True) # enables the convolutional Forward Error Correction built into the radio

while the toolset was created to make communicating with <ghz much easier, you will find the cc1111 manual from ti a great value. the better you understand the radio, the better your experience will be. play with the radio settings, but i recommend playing in small amounts and watch for the effects. several things in the radio configuration settings are mandatory to get right in order to receive or transmit anything (one of those odd requirements is the TEST2/1/0 registers!)

If you watched any of my talks on rfcat, you will likely remember that you need to put the radio in IDLE state before configuring. (I said it three times, in a row, in different inflections).

However, you will find that I've done that for you in the client for most things. The only time you need to do this yourself are: * If you are doing the changes in firmware * If you are using the "d.poke()" functionality * if you use "d.setRFRegister()", this is handled for you * use d.setRFRegister()

External Projects

ZWave Attack: https://github.com/initbrain/Z-Attack

Epilogue

Other than that, hack fun, and feel free to share any details you can about successes and questions about failures you are able!

@ and the rest of the development team.

rfcat's People

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  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

rfcat's Issues

RFxmit ignores the repeat parameter

It looks like the firmware is ignoring the repeat parameter that rflib sends.
However, when I tried to put it back in, the firmware stopped responding to all commands after finishing the transmission. I tried debugging and couldn't figure out the reason why.
Is there a configuration step that I should run to keep it responding?
Thank you!

YS1 failed to update the firmware.

I'm a bit of a noob, I attempted to update the firmware on two different YS1. And received the same message from them, which apparently, there is no notes or any previous reported issues for it...

==RfCatYS1CCBootloader.hex building==
sdcc -Iinclude -DBUILD_VERSION=../revision.sh --xram-loc 0xF000 --code-loc 0x1400 appFHSSNIC.c chipcon_usb.rel chipcon_usbdebug.rel chipcon_dma.rel bootloader.rel cc1111rf.rel global.rel cc1111_aes.rel -DYARDSTICKONE -DCC1111 -DUSBDEVICE
tee: .revision: Permission denied
appFHSSNIC.c:1371: error 4: 'fopen' failed on file 'appFHSSNIC.asm'
Makefile:98: recipe for target 'RfCatYS1CCBootloader.hex' failed
make: *** [RfCatYS1CCBootloader.hex] Error 1

Any help or support with these units, would be appreciated

Question about Yardstick One

I hear Yardstick One uses this firmware. So what I want to know is this. How do I actually control Yardstick One (or any other device that uses this firmware)? Do I need to use Zadig to install WinUSB or LibUSB to install the proper driver (and then download or write my own software designed to control the device via this driver)? Or is the device automatically recognized (without any manual driver installation) by Windows as a serial port device, so I can use normal terminal software to control it?

Get channel OP in Freenode RFCat

Hey @atlas0fd00m

I got the GSG folks control of the #HackRF channel on Freenode because of the amount of bots/trolls we're getting lately.

The same bots/trolls are also now hitting up #rfcat...

Do you want me to ask for Ownership of #RFCat for you, and then you delegate to someone (either myself of @dominicgs for instance) or would you like to just get it put under GSG and make @dominicgs manage it anyway?

If you want ownership what's your registered Freenode account name and I'll hit up the admins in channel #Freenode. Who will want your email address to confirm.

I'll point them here to this repo and the old bitbucket one.

So if you want to hand over channel mod to GSG, me, or whomever then just say what you want done and the mods can then hit you up directly for confirmation after I ask.

Sound like a plan?

Cheers
Gareth

is there any guide on how to update the firmware?

I have the Yard Stick one and I'm looking for I guide on how to the firmware so what I did was
rfcat --bootloader --force
to varify I did
rfcat_bootloader /dev/RFCAT5 verify /opt/rfcat/firmware/CCBootloader/CCBootloader-rfcat-ys1.hex
and this is what I got
Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient. (error: SerialException(2, "could not open port /dev/RFCAT5: [Errno 2] No such file or directory: '/dev/RFCAT5'"))

Yardstick One amplifier not working

Hello,how can i enable Yardstick One power amplifiers....when i use d.setMaxPower() it just set power of cc1111...and when i set d.setAmpMode(1) i dont see any change in signal power...thanks for help

Error in resetup():USBError(110, u'Operation timed out')

Hello, I've bought a Yard stick one, I installed bootloader with installRfCatYS1CCBootloader 1 time, it worked well but I switched to another linux distro so I thought it would be good to install bootloader again and now I cannot manage to enter bootloader mode, so I cannot do anything, not even make clean install. I also tried to force bootloader mode but it does not work. Do you have any solution please ?

Bricked my YS1

root@kalisp:~/Downloads/rfcat/firmware# make installRfCatYS1CCBootloader

==RfCatYS1CCBootloader.hex building==
sdcc -Iinclude -DBUILD_VERSION=../revision.sh --xram-loc 0xF000 --code-loc 0x1400 appFHSSNIC.c chipcon_usb.rel chipcon_usbdebug.rel chipcon_dma.rel bootloader.rel cc1111rf.rel global.rel cc1111_aes.rel -DYARDSTICKONE -DCC1111 -DUSBDEVICE
packihx <appFHSSNIC.ihx >bins/RfCatYS1CCBootloader.hex
packihx: read 611 lines, wrote 1178: OK.
if [ ! -c /dev/RFCAT_BL_YS1 ] ; then ../rfcat --bootloader --force && sleep 1 ; fi ;
Entering RfCat Bootloader mode, ready for new image...
rfcat_bootloader /dev/RFCAT_BL_YS1 erase_all
RC = 0 (OK)
rfcat_bootloader /dev/RFCAT_BL_YS1 download bins/RfCatYS1CCBootloader.hex
Writing :0614000002148B024B3FB9 RC = 0 (OK)
Writing :01140B0032AE RC = 0 (OK)
Writing :0114130032A6 RC = 0 (OK)
Writing :01141B00329E RC = 0 (OK)
Writing :011423003296 RC = 0 (OK)
Writing :01142B00328E RC = 0 (OK)
Writing :031433000243C4AD RC = 0 (OK)
Writing :01143B00327E RC = 0 (OK)
Writing :011443003276 RC = 0 (OK)
Writing :03144B00025277D3 RC = 0 (OK)
Writing :03145300021ABEBC RC = 0 (OK)
Writing :03145B00021D98D7 RC = 0 (OK)
Writing :011463003256 RC = 0 (OK)
Writing :03146B00024447F1 RC = 0 (OK)
Writing :011473003246 RC = 0 (OK)
Writing :01147B00323E RC = 0 (OK)
Writing :03148300024E63B3 RC = 0 (OK)
Writing :0314E70002148666 RC = 0 (OK)
Writing :03148600022E52E1 RC = 0 (OK)
Writing :1014EA00AF83E58290F554F0EFA3F0C2A0C2A4D274 RC = 0 (OK)
Writing :1014FA00A375E10490DF3BE0FFBF01F890F554E0EB RC = 0 (OK)
Writing :10150A00FEA3E090DF06EEF0C2A090FC8CE024FF80 RC = 0 (OK)
Writing :10151A0092A4E06401FF24FF92A375E10290DF3BED RC = 0 (OK)
Writing :10152A00E0FFBF0DF8227E007F0090FC28E0FCA3BC RC = 0 (OK)
Writing :10153A00E0FD8E028F03C3EA9CEB9D503AEE240035 RC = 0 (OK)
Writing :10154A00FCEF34F0FD90FC26E0F513A3E0F5148AD5 RC = 0 (OK)
Writing :10155A00828B83C007C006C005C0041257ACAA829A RC = 0 (OK)
Writing :10156A00AB83D004D005D006D0078C828D83EAF0F5 RC = 0 (OK)
Writing :10157A000EBE00B60F80B322E58290F556F0E0FF6A RC = 0 (OK)
Writing :10158A00E59CC39FF59CE59C24FAF59C439E10D2EA RC = 0 (OK)
Writing :10159A00BA22AF9E74EF5FF59E22AF83E58290F583 RC = 0 (OK)
Writing :1015AA005AF0EFA3F090FC21E0601390596E1244B8 RC = 0 (OK)
Writing :1015BA00B690FC21E0F5821244F87582EF2290FC85 RC = 0 (OK)
Writing :1015CA00217406F090DF3BE0FFBF130280F6C29160 RC = 0 (OK)
Writing :1015DA0090F557E0FEA3E0FF90FC88EEF0EFA3F051 RC = 0 (OK)
Writing :1015EA0090FC8274F1F0E4A3F090FC187472F07429 RC = 0 (OK)
Writing :1015FA00F3A3F090FC80E4F0A3F090FC33F090FCAD RC = 0 (OK)
Writing :10160A007CF090FC32F090FC7E04F0E4A3F090FCB5 RC = 0 (OK)
Writing :10161A007D7402F090F55CE4F090000012175D9082 RC = 0 (OK)
Writing :10162A00F55AE0FEA3E0FF90F559E0FD7B007C004F RC = 0 (OK)
Writing :10163A008D017A00C3EB99EC9A50548B02EA75F04B RC = 0 (OK)
Writing :10164A00F0A42EF9E43FFA90F55C74F0F089828AEE RC = 0 (OK)
Writing :10165A0083C007C006C005C004C00312175DAA8272 RC = 0 (OK)
Writing :10166A00D003D004D005D006D007EA601B9059C039 RC = 0 (OK)
Writing :10167A00C0021244B6D00290FC21E4F08A82C00271 RC = 0 (OK)
Writing :10168A001244F8D0028A82220BBB00A40C80A190DB RC = 0 (OK)
Writing :10169A00FC8BE0FF30E33390FC88E0FEA3E0FFEE32 RC = 0 (OK)
Writing :1016AA00540F602690FC88E0FEA3E053060F7F00EB RC = 0 (OK)
Writing :1016BA007410C39EFEE49FFF90FC88E0FCA3E0FD4B RC = 0 (OK)
Writing :1016CA0090FC88EE2CF0EF3DA3F090FC88E0FEA39E RC = 0 (OK)
Writing :1016DA00E0FFC374FF9EE49F502390FC88E0FEA3C2 RC = 0 (OK)
Writing :1016EA00E090DF02EEF090DF04E0FF74FC5FF0E0D0 RC = 0 (OK)
Writing :1016FA00FF74024FF090FC8A7401F0801290FC880B RC = 0 (OK)
Writing :10170A00E0FEA3E0FF90DF02EEF090FC8AE4F090A6 RC = 0 (OK)
Writing :10171A00FC8CE024FF92A0C2A490FC8CE06401241B RC = 0 (OK)
Writing :10172A00FF92A375E1037E607FEA90DF3BE0FDBD97 RC = 0 (OK)
Writing :10173A00130280091EBEFF011FEE4F70EDD291EE1B RC = 0 (OK)
Writing :10174A004F700C90FC467413F09059D81244B67539 RC = 0 (OK)
Writing :10175A00820022AF83E58290F55DF0EFA3F090F569 RC = 0 (OK)
Writing :10176A005CE0FF240F500A9059E91244B67582FFD3 RC = 0 (OK)
Writing :10177A0022EF703E90FC32E4F090FC32E0FE90FCE6 RC = 0 (OK)
Writing :10178A007DE0FDC3EE9D502190FC32E075F0F1A49E RC = 0 (OK)
Writing :10179A002472F58274F335F0F583E4F090FC32E0BC RC = 0 (OK)
Writing :1017AA00FE0E90FC32EEF080D090FC32E4F07582AE RC = 0 (OK)
Writing :1017BA00002290FC21E0FE601DBE061E90FC32E075 RC = 0 (OK)
Writing :1017CA00601890DF3BE0FEBE1302800E90FC21748D RC = 0 (OK)
Writing :1017DA0007F07582ED227582ED2290FC32E075F0F9 RC = 0 (OK)
Writing :1017EA00F1A42472FD74F335F0FE8D828E83E060DD RC = 0 (OK)
Writing :1017FA000A90FC467418F07582FE228D828E8374DC RC = 0 (OK)
Writing :10180A00FFF090FC32E075F0F1A42472FD74F33518 RC = 0 (OK)
Writing :10181A00F0FE0DBD00010E7C0090F55DE0FAA3E03C RC = 0 (OK)
Writing :10182A00FB8A138B148C158F037F008B168F178DF1 RC = 0 (OK)
Writing :10183A00828E838CF0C007C0031256D3D003D00720 RC = 0 (OK)
Writing :10184A0090FC8BE0FE20E30302190590FC32E07560 RC = 0 (OK)
Writing :10185A00F0F1A42472FD74F335F0FE0DBD00010E03 RC = 0 (OK)
Writing :10186A0090FC5DEBF0EFA3F08D828E831253F1AE04 RC = 0 (OK)
Writing :10187A008290F55CEEF090FC8BE0FF530704BF0406 RC = 0 (OK)
Writing :10188A003F90FC32E075F0F1A42472FD74F335F058 RC = 0 (OK)
Writing :10189A00FF0DBD00010F8E037C0090FC8BE0FA5314 RC = 0 (OK)
Writing :1018AA0002F090FC61EDF0EFA3F090FC63EBF0EC3A RC = 0 (OK)
Writing :1018BA00A3F090FC65EAF08D828F8312542B803B53 RC = 0 (OK)
Writing :1018CA0090FC32E075F0F1A42472FD74F335F0FF58 RC = 0 (OK)
Writing :1018DA000DBD00010F7C0090FC8BE0FB5303F090E0 RC = 0 (OK)
Writing :1018EA00FC68EDF0EFA3F090FC6AEEF0ECA3F09048 RC = 0 (OK)
Writing :1018FA00FC6CEBF08D828F8312547490FC32E0758D RC = 0 (OK)
Writing :10190A00F0F1A42472FE74F335F0FF90F55CE0FD6B RC = 0 (OK)
Writing :10191A008E828F83F090FC32E0FF0F90FC32EFF062 RC = 0 (OK)
Writing :10192A0090FC7DE0FEEFB5060590FC32E4F075828E RC = 0 (OK)
Writing :10193A000022AF83E58290F55FF0EFA3F090FC21DF RC = 0 (OK)
Writing :10194A00E0FF6014BF0102800F905A031244B69060 RC = 0 (OK)
Writing :10195A00FC21E0F5821244F812159C90FC2AE4F06E RC = 0 (OK)
Writing :10196A00A3F090FC2AE0FEA3E0FF8E828F83121A76 RC = 0 (OK)
Writing :10197A003E90DF3BE0FFBF0DF890DF3AE0FF5307F0 RC = 0 (OK)
Writing :10198A007FBF6000402790FC2AE0FEA3E0FF0EBE66 RC = 0 (OK)
Writing :10199A0000010F90FC2AEEF0EFA3F0D29190000A1A RC = 0 (OK)
Writing :1019AA001250EAC29190000A1250EA80B590FC21C6 RC = 0 (OK)
Writing :1019BA007402F090FC47E0FCA3E0FDA3E0A3E090F2 RC = 0 (OK)
Writing :1019CA00FC2CECF0EDA3F090F55FE0FEA3E0FF90B5 RC = 0 (OK)
Writing :1019DA00FC30EEF0EFA3F02290FC21E4F090FC47FB RC = 0 (OK)
Writing :1019EA00E0FCA3E0FDA3E0A3E090FC2CECF0EDA367 RC = 0 (OK)
Writing :1019FA00F02290FC217404F090FC47E0FCA3E0FD87 RC = 0 (OK)
Writing :101A0A00A3E0A3E090FC2CECF0EDA3F02290FC21E3 RC = 0 (OK)
Writing :101A1A007405F090FC34E4F0A3F090FC47E0FCA3DA RC = 0 (OK)
Writing :101A2A00E0FDA3E0A3E090FC2CECF0EDA3F07582BE RC = 0 (OK)
Writing :101A3A0000021582AF83E58290F561F0EFA3F09082 RC = 0 (OK)
Writing :101A4A00F561E0FEA3E0FFEE2400F582EF34F0F545 RC = 0 (OK)
Writing :101A5A0083E0FF7E008F828E830214EAAF83E582E1 RC = 0 (OK)
Writing :101A6A0090F563F0EFA3F090F563E0FEA3E0FF903A RC = 0 (OK)
Writing :101A7A00F370EEF0EFA3F0222290FC2AE0FEA3E03E RC = 0 (OK)
Writing :101A8A00FF0EBE00010F90FC2AEEF0EFA3F0C3EEAA RC = 0 (OK)
Writing :101A9A009470EF9403400790FC2AE4F0A3F090FCC2 RC = 0 (OK)
Writing :101AAA002AE0FEA3E0FFEE2400F582EF34F0F5838E RC = 0 (OK)
Writing :101ABA00E0F58222C021C0E0C0F0C082C083C00726 RC = 0 (OK)
Writing :101ACA00C006C005C004C003C002C001C000C0D027 RC = 0 (OK)
Writing :101ADA0075D00090FC1DE02401F0A3E03400F090E2 RC = 0 (OK)
Writing :101AEA00FC22E0FEA3E0FF90FC1DE0FCA3E0FDEC7D RC = 0 (OK)
Writing :101AFA00B5060BEDB5070790FC1DE4F0A3F090FCCA RC = 0 (OK)
Writing :101B0A001DE0FEA3E0FFBE0005BF0002800BBE0180 RC = 0 (OK)
Writing :101B1A0005BF00028068021C8090FC1DE0FEA3E065 RC = 0 (OK)
Writing :101B2A008E077E00AC9C7D00EC4206ED420790FCDD RC = 0 (OK)
Writing :101B3A002EEEF0EFA3F090FC2AE0FEA3E0FF0EBE2B RC = 0 (OK)
Writing :101B4A0000010F90FC2AEEF0EFA3F090FC28E0FCD5 RC = 0 (OK)
Writing :101B5A00A3E0FDC3EE9CEF9D400790FC2AE4F0A3AE RC = 0 (OK)
Writing :101B6A00F090DF3BE0FFBF1303021D7B90FC2AE0ED RC = 0 (OK)
Writing :101B7A00FEA3E0FF8E828F83121A3E021D7B90FC29 RC = 0 (OK)
Writing :101B8A0021E0FFBF05028003021D7B90001912505D RC = 0 (OK)
Writing :101B9A00EA90F567741CF090FC2AE0FEA3E090F549 RC = 0 (OK)
Writing :101BAA0068EEF090FC2AE0A3E090F569F090F56AFF RC = 0 (OK)
Writing :101BBA007442F090F56B744CF090F56C7441F090AF RC = 0 (OK)
Writing :101BCA00F56D7448F090F56E7442F090F56F744CB0 RC = 0 (OK)
Writing :101BDA00F090F5707441F090F5717448F090F572D8 RC = 0 (OK)
Writing :101BEA007442F090F573744CF090F5747441F0906F RC = 0 (OK)
Writing :101BFA00F5757448F090F5767442F090F577744C68 RC = 0 (OK)
Writing :101C0A00F090F5787441F090F5797448F090F57A8F RC = 0 (OK)
Writing :101C1A007442F090F57B744CF090F57C7441F0902E RC = 0 (OK)
Writing :101C2A00F57D7448F090F57E7442F090F57F744C1F RC = 0 (OK)
Writing :101C3A00F090F5807441F090F5817448F090F58247 RC = 0 (OK)
Writing :101C4A007420F090FC36741CF0E4A3F090FC38F099 RC = 0 (OK)
Writing :101C5A00A3F090FC3AF0A3F090F56812479290FC3A RC = 0 (OK)
Writing :101C6A0034E0FEA3E0FF0EBE00010F90FC34EEF05C RC = 0 (OK)
Writing :101C7A00EFA3F0021D7B90FC21E0FFBF0302806509 RC = 0 (OK)
Writing :101C8A00BF04028008BF05028003021D7B90FC2C62 RC = 0 (OK)
Writing :101C9A00E0FEA3E0FF90FC47E0FAA3E0FBA3E0FC30 RC = 0 (OK)
Writing :101CAA00A3E0FD8E008F01E4FEFFEAC398FAEB99E8 RC = 0 (OK)
Writing :101CBA00FBEC9EFCED9FFDC374649AE49BE49CE4F8 RC = 0 (OK)
Writing :101CCA009D5022905A311244B690FC217405F0902E RC = 0 (OK)
Writing :101CDA00FC47E0FCA3E0FDA3E0FEA3E0FF90FC2CA0 RC = 0 (OK)
Writing :101CEA00ECF0EDA3F090FC33E075F0F1A42472FE61 RC = 0 (OK)
Writing :101CFA0074F335F0FF8E828F83E0607590001912BD RC = 0 (OK)
Writing :101D0A0050EA90FC33E075F0F1A42472FE74F335C6 RC = 0 (OK)
Writing :101D1A00F0FF90DF04E05401FDB40100E4332EFD2E RC = 0 (OK)
Writing :101D2A00E43FFC8E828F83E090FC36F0E4A3F090CF RC = 0 (OK)
Writing :101D3A00FC38F0A3F090FC3AF0A3F08D828C831269 RC = 0 (OK)
Writing :101D4A00479290FC33E075F0F1A42472F58274F3A3 RC = 0 (OK)
Writing :101D5A0035F0F583E4F090FC33E0FF0F90FC33EFAD RC = 0 (OK)
Writing :101D6A00F0BF0200400590FC33E4F0905A4F124451 RC = 0 (OK)
Writing :101D7A00B6D0D0D000D001D002D003D004D005D044 RC = 0 (OK)
Writing :101D8A0006D007D083D082D0F0D0E0D02132329072 RC = 0 (OK)
Writing :101D9A00FC21E4F090FC32F090FC33F090FC2AF045 RC = 0 (OK)
Writing :101DAA00A3F090FC267453F0E4A3F090FC2874533B RC = 0 (OK)
Writing :101DBA00F0E4A3F090FC2EF0A3F090FC2CF0A3F03A RC = 0 (OK)
Writing :101DCA0090FC227406F0E4A3F090FC24F0A3F090B7 RC = 0 (OK)
Writing :101DDA00FC30F0A3F090FC34F0A3F012153090FC24 RC = 0 (OK)
Writing :101DEA0021E4F0759DDC859E9E439E0443CB102220 RC = 0 (OK)
Writing :101DFA00021D999022451233A390FC47E4F0A3F008 RC = 0 (OK)
Writing :101E0A00A3F0A3F0121DFA90F583E4F090F5847420 RC = 0 (OK)
Writing :101E1A0012F074F8A3F02290FC21E0FFBF00030245 RC = 0 (OK)
Writing :101E2A00217ABF010302204BBF0203021F49BF03ED RC = 0 (OK)
Writing :101E3A000302217ABF040302217ABF050302215B50 RC = 0 (OK)
Writing :101E4A00BF060122BF40028006BF4102804822C26B RC = 0 (OK)
Writing :101E5A00A0C2A4D2A375E10490DF3BE0FFBF01F862 RC = 0 (OK)
Writing :101E6A0090DF0374E5F090DF047404F090DF0774E8 RC = 0 (OK)
Writing :101E7A0012F090DF08E4F090DF147410F090DF178E RC = 0 (OK)
Writing :101E8A00E0FF74C04FF090FC217441F090F5847427 RC = 0 (OK)
Writing :101E9A0012F074F8A3F090F583E4F090FC34E0FEBD RC = 0 (OK)
Writing :101EAA00A3E0FF90F583E0FDFB7C00C3EB9EEC9F73 RC = 0 (OK)
Writing :101EBA00505D90DF06EDF0C2A0C2A4D2A375E10482 RC = 0 (OK)
Writing :101ECA0090DF3BE0FFBF01F8C2A090FC8CE024FF4A RC = 0 (OK)
Writing :101EDA0092A4E06401FF24FF92A375E10290DF3B24 RC = 0 (OK)
Writing :101EEA00E0FFBF0DF89000021250EA90F584E0FE80 RC = 0 (OK)
Writing :101EFA00A3E0FF90F583E02EFEE43FFF90DF3AE097 RC = 0 (OK)
Writing :101F0A00FD8E828F83F090F583E02401F0808CC2ED RC = 0 (OK)
Writing :101F1A00A0C2A4D2A375E10490DF3BE0FFBF01F8A1 RC = 0 (OK)
Writing :101F2A0090FC34E0FEA3E08E3375340090F584E033 RC = 0 (OK)
Writing :101F3A00F535A3E0F536753201758243022E84E544 RC = 0 (OK)
Writing :101F4A000E700302203990FC45740DF0AF9A74FEAE RC = 0 (OK)
Writing :101F5A005FF59AE50E20E40302203990FC21740310 RC = 0 (OK)
Writing :101F6A00F090FC1FE0FEA3E08E82121582905A5D6B RC = 0 (OK)
Writing :101F7A001244B690FC1FE0FEA3E0FF8E828F83120C RC = 0 (OK)
Writing :101F8A00451390F811E025E0FEE42412FFEE34F840 RC = 0 (OK)
Writing :101F9A00FE8F828E831244B690F811E0FFB40100DE RC = 0 (OK)
Writing :101FAA00E433FF90F583F0EF2416FDE434FCFE8D54 RC = 0 (OK)
Writing :101FBA00828E83E0707290DF04E0FE30E0378F0695 RC = 0 (OK)
Writing :101FCA00EE2EFDE42412F582ED34F8F583E0FE8E60 RC = 0 (OK)
Writing :101FDA00337534008F06EE2EFDE42412FEED34F83C RC = 0 (OK)
Writing :101FEA00FD74012EF535E43DF536753201758242F0 RC = 0 (OK)
Writing :101FFA00122E84802290DF02E0FE8E33E4F534EF65 RC = 0 (OK)
Writing :10200A002FFEE42412FFEE34F8FE8F358E36753239 RC = 0 (OK)
Writing :10201A0001758242122E8490F583E0FF2416F58220 RC = 0 (OK)
Writing :10202A00E434FCF5837401F0AF0E74EF5FF50ED261 RC = 0 (OK)
Writing :10203A000010AF02C200750E00A20092AF439A01CF RC = 0 (OK)
Writing :10204A0022E50E700302214990FC45740DF0AF9A07 RC = 0 (OK)
Writing :10205A0074FE5FF59AE50E20E40302214990F81117 RC = 0 (OK)
Writing :10206A00E0FF90F583B40100E433F0905A72124411 RC = 0 (OK)
Writing :10207A00B690F583E025E0FEE42412FFEE34F8FE84 RC = 0 (OK)
Writing :10208A008F828E8312451390F583E025E0FEE424C7 RC = 0 (OK)
Writing :10209A0012FFEE34F8FE8F828E831244B690F81146 RC = 0 (OK)
Writing :1020AA00E0FFB40100E433FF90F583F0EF2416FD5E RC = 0 (OK)
Writing :1020BA00E434FCFE8D828E83E0707290DF04E0FED1 RC = 0 (OK)
Writing :1020CA0030E0378F06EE2EFDE42412F582ED34F867 RC = 0 (OK)
Writing :1020DA00F583E0FE8E337534008F06EE2EFDE42480 RC = 0 (OK)
Writing :1020EA0012FEED34F8FD74012EF535E43DF5367532 RC = 0 (OK)
Writing :1020FA003201758242122E84802290DF02E0FE8E27 RC = 0 (OK)
Writing :10210A0033E4F534EF2FFEE42412FFEE34F8FE8FA9 RC = 0 (OK)
Writing :10211A00358E36753201758242122E8490F583E02F RC = 0 (OK)
Writing :10212A00FF2416F582E434FCF5837401F0D2001022 RC = 0 (OK)
Writing :10213A00AF02C200AF0E74EF5FF50EA20092AFD2EB RC = 0 (OK)
Writing :10214A000010AF02C200750E00A20092AF439A01BE RC = 0 (OK)
Writing :10215A002290FC34E0FEA3E0FF90FC28E0FCA3E020 RC = 0 (OK)
Writing :10216A00FDC3EE9CEF9D50012290FC217404F022E5 RC = 0 (OK)
Writing :10217A00E50E70012290FC45740DF0E50E543070A6 RC = 0 (OK)
Writing :10218A00012290F811E0FFB40100E433FF90F583D7 RC = 0 (OK)
Writing :10219A00F0EF2416FDE434FCFE8D828E83E06003AA RC = 0 (OK)
Writing :1021AA0002223290DF04E0FE30E0378F06EE2EFD89 RC = 0 (OK)
Writing :1021BA00E42412F582ED34F8F583E0FE8E337534AB RC = 0 (OK)
Writing :1021CA00008F06EE2EFDE42412FEED34F8FD7401B4 RC = 0 (OK)
Writing :1021DA002EF535E43DF536753201758242122E84AC RC = 0 (OK)
Writing :1021EA00803590FC77E0E0600A90FC7AE0FDA3E09D RC = 0 (OK)
Writing :1021FA00FE800890DF02E0FCFD7E00EF2FFCE42465 RC = 0 (OK)
Writing :10220A0012FFEC34F8FC8F358C367532018D338E23 RC = 0 (OK)
Writing :10221A0034758242122E8490F583E0FF2416F582EB RC = 0 (OK)
Writing :10222A00E434FCF5837401F0D20010AF02C200AFAF RC = 0 (OK)
Writing :10223A000E74CF5FF50EA20092AF2290F7C3E0FDB5 RC = 0 (OK)
Writing :10224A00A3E0FEA3E0FF90F7C8E0FCBC42028003D3 RC = 0 (OK)
Writing :10225A00022BE090F7C9E0FC24BE5003022BD2EC1B RC = 0 (OK)
Writing :10226A00240A83F582EC244683F583E473D2D24BA5 RC = 0 (OK)
Writing :10227A0093D2FEB9D7EA235C80C361D2D227A6CD16 RC = 0 (OK)
Writing :10228A00406578E4588DD2D2D2D2D2D2D237C007A2 RC = 0 (OK)
Writing :10229A00FD20D2D2D2D2D2D2D2D2D2D2D2D2D2D29B RC = 0 (OK)
Writing :1022AA00D2D2D2D2D2D2D2D2D2D2D2D2D2FB352B1F RC = 0 (OK)
Writing :1022BA002B23252B2324242425252525262B2B29AE RC = 0 (OK)
Writing :1022CA0029292A2A2A2A28292B2B2B2B2B2B2B2B61 RC = 0 (OK)
Writing :1022DA002B2B292A2B2B2B2B2B2B2B2B2B2B2B2B47 RC = 0 (OK)
Writing :1022EA002B2B2B2B2B2B2B2B2B2B2B2B2B2B2B223D RC = 0 (OK)
Writing :1022FA0023C007C006C00512159CD005D006D0071A RC = 0 (OK)
Writing :10230A0090FC217440F08D828E838FF012590BFC61 RC = 0 (OK)
Writing :10231A007B0090FC34ECF0EBA3F090F7E9EDF0EEE3 RC = 0 (OK)
Writing :10232A00A3F0758201124208022BE090FC21E4F02E RC = 0 (OK)
Writing :10233A0090F7E9EDF0EEA3F0758201124208022B44 RC = 0 (OK)
Writing :10234A00E090FC21E06009905A8C1244B6022BE01E RC = 0 (OK)
Writing :10235A008D828E838FF012590BFC7B0090F586ECF0 RC = 0 (OK)
Writing :10236A00F0EBA3F08D828E83A3E0FAE4F92CFCEA69 RC = 0 (OK)
Writing :10237A003BFB90F586ECF0EBA3F08D828E83A3A352 RC = 0 (OK)
Writing :10238A00A3A3E0FA8A0889098D828E83A3A3A3A353 RC = 0 (OK)
Writing :10239A00A3E0FAE42508F508EA3509F50990FC1ADC RC = 0 (OK)
Writing :1023AA00E4F0A3F074062DF9E43EFA90FC36ECF062 RC = 0 (OK)
Writing :1023BA00EBA3F090FC38E4F0A3F090FC3AE508F0C7 RC = 0 (OK)
Writing :1023CA00E509A3F089828A83C007C006C0051247BF RC = 0 (OK)
Writing :1023DA0092AC82D005D006D0078D828E838FF0EC26 RC = 0 (OK)
Writing :1023EA0012577490F7E9EDF0EEA3F07582011242EC RC = 0 (OK)
Writing :1023FA0008022BE08D828E838FF012590B90FC7AA3 RC = 0 (OK)
Writing :10240A00F0E4A3F08D828E83A3E0FB7C0090FC7A3B RC = 0 (OK)
Writing :10241A00E0F9A3E0FA90FC7AEC29F0EB3AA3F09009 RC = 0 (OK)
Writing :10242A00FC7AE0A3E090FC7AE0F5F0A3E045F060E6 RC = 0 (OK)
Writing :10243A004B90FC777401F090FC78E0A3E090FC7874 RC = 0 (OK)
Writing :10244A00E0F5F0A3E045F070471246BF90FC7AE051 RC = 0 (OK)
Writing :10245A00FBA3E0FC90FC78EBF0ECA3F090FC78E0B6 RC = 0 (OK)
Writing :10246A00FBA3E090DF02EBF090DF04E0FC74FC5C7D RC = 0 (OK)
Writing :10247A00F0E0FC74024CF012465F801490FC77E4A2 RC = 0 (OK)
Writing :10248A00F090FC78F0A3F090FC7AF0A3F01246BF2B RC = 0 (OK)
Writing :10249A0090F7C8E0FC90F7C9E0F53275357A7536E1 RC = 0 (OK)
Writing :1024AA00FC7533017534008C82122E84022BE08D68 RC = 0 (OK)
Writing :1024BA00828E838FF012590B90FC8BF090F7E9ED26 RC = 0 (OK)
Writing :1024CA00F0EEA3F0758201124208022BE090F7E9C0 RC = 0 (OK)
Writing :1024DA00748BF074FCA3F0758201124208022BE09F RC = 0 (OK)
Writing :1024EA0090FC8BE0FC5304F090FC597406F090FCCD RC = 0 (OK)
Writing :1024FA005AECF08D828E838FF0C007C006C0051299 RC = 0 (OK)
Writing :10250A005399D005D006D00790F7E9EDF0EEA3F085 RC = 0 (OK)
Writing :10251A00758210124208022BE090FC8BE0FC5304F7 RC = 0 (OK)
Writing :10252A00F090FC597404F090FC5AECF08D828E8382 RC = 0 (OK)
Writing :10253A008FF0C007C006C005125399D005D006D047 RC = 0 (OK)
Writing :10254A000790F7E9EDF0EEA3F07582101242080247 RC = 0 (OK)
Writing :10255A002BE08D828E838FF012590B90FC8CF0E069 RC = 0 (OK)
Writing :10256A00FC74015CF090F7E9EDF0EEA3F0758201DE RC = 0 (OK)
Writing :10257A00124208022BE090F7E9748CF074FCA3F085 RC = 0 (OK)
Writing :10258A00758201124208022BE08D828E838FF0122F RC = 0 (OK)
Writing :10259A00590BFC7B008C828B83C007C006C00512D6 RC = 0 (OK)
Writing :1025AA001A66D005D006D00790F7E9EDF0EEA3F051 RC = 0 (OK)
Writing :1025BA00758201124208022BE090FC21E0601C8D1A RC = 0 (OK)
Writing :1025CA00828E838FF074EF12577490F7E9EDF0EE74 RC = 0 (OK)
Writing :1025DA00A3F0758201124208022BE08D828E838F4E RC = 0 (OK)
Writing :1025EA00F012590BFC7B0090F586ECF0EBA3F08D12 RC = 0 (OK)
Writing :1025FA00828E83A3E0FAE42CFCEA3BFB90F586EC9E RC = 0 (OK)
Writing :10260A00F0EBA3F08D828E83A3A3E0FA90FC1AE488 RC = (Unknown Error)
Error downloading code!
rfcat_bootloader /dev/RFCAT_BL_YS1 verify bins/RfCatYS1CCBootloader.hex && rfcat_bootloader /dev/RFCAT_BL_YS1 run
Verifying 0016 bytes at address: 156A Failed! Expected: AB83D004D005D006D0078C828D83EAF0 Got:
Makefile:370: recipe for target 'installRfCatYS1CCBootloader' failed
make: *** [installRfCatYS1CCBootloader] Error 1

Now the yellow and red led on the YS1 are dim and always on!
How do i recover ?

Firmware build incompatible with NOP()-defining header (SDCC 3.7.0)

When building with Fedora 29 / sdcc-3.7.0-1.fc29:

sdcc -Iinclude -DBUILD_VERSION=`../revision.sh` -DIMME -c cc1111_aes.c
In file included from include/chipcon_usb.h:4,                                                   from include/cc1111.h:48,
                 from include/cc1111_aes.h:7,                                                    from cc1111_aes.c:2:
include/global.h:84:1: warning: "NOP" redefined
In file included from /usr/share/sdcc/include/mcs51/cc1110.h:29,
                 from include/cc1111.h:5,
                 from include/cc1111_aes.h:7,
                 from cc1111_aes.c:2:
/usr/share/sdcc/include/mcs51/compiler.h:88:1: error: this is the location of the previous definition

The NOP-macros are, as one might guess, exactly the same. (pull request soon)

Pervasive timeout issues during normal xmit operation

Hello everyone,

I'm running rfcat on a raspberry pi (Linux cherry-pi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux) with a yardstick one.

About 20% of the time I call RFxmit (on a long message, see below) I get back ChipconUsbTimeoutException: Timeout waiting for USB response.. I've tried numerous approaches including liberal setting of idle mode. The only observation is it's more likely to occur on successive rapid calls of RFxmit. These are identical calls with the same exact message.

What's the right path forward for debugging? I'm not sure where the line between libraries, device, and rfcat are.

Sample traceback:

Traceback (most recent call last):
...
  File "/home/pi/rfcat/rflib/chipcon_nic.py", line 1325, in RFxmit
    return self.RFxmitLong(data, doencoding=False)
  File "/home/pi/rfcat/rflib/chipcon_nic.py", line 1367, in RFxmitLong
    retval,ts = self.send(APP_NIC, NIC_XMIT_LONG_MORE, "%s" % struct.pack("B", len(chunk))+chunk, wait=wait)
  File "/home/pi/rfcat/rflib/chipcon_usb.py", line 713, in send
    return self.recv(app, cmd, wait)
  File "/home/pi/rfcat/rflib/chipcon_usb.py", line 677, in recv
    raise ChipconUsbTimeoutException
ChipconUsbTimeoutException: Timeout waiting for USB response.

python3 port

Hi,

Im working on python port of expliot (https://bitbucket.org/aseemjakhar/expliot_framework, dumping the ruby version) and planning to implement rfcat plugins. Are you planning to port rfcat to python3?
I saw a discussion on bitbucket.org about it. Also, will you be uploading it to pypi as well?

Regards,
Aseem

Sysntax error in discovery mod

in the module chipcon_nic.py
Line 1481 :
if (re.Search(RegExpSearch, ynext) is not None):

re is python regex module
should be re.search with a lower case s instead of uppercase S

the correct line should be :

if (re.search(RegExpSearch, ynext) is not None):

chars default to unsigned in sdcc 3.6+

prior to sdcc 3.6.0, the compiler's default behavior was to assume all chars were signed. the default is now to they're unsigned.

either -fsigned-chars should be added to the compiler flags when 3.6+ is detected, or all chars should be explicitly defined signed/unsigned.

unable to flash FW on Mac OS

I think I have things setup correctly, however I'm not seeing any RFCAT ports enumerated in /dev.

After
sudo rfcat --bootloader --force
I see the 3 lights lit.

BiffRaff:lsusb graypowell$ ls -lrt /dev/ |grep usb
crw-rw-rw- 1 root wheel 18, 14 Apr 17 16:12 tty.usbmodem0000011
crw-rw-rw- 1 root wheel 18, 15 Apr 17 16:15 cu.usbmodem0000011

Now when trying to flash the code I see:
sudo ./rfcat_bootloader /dev/cu.usbmodem0000011 download ../firmware/CCBootloader/CCBootloader-rfcat-ys1.hex
Writing :0600000002017B02140363 RC = 3 (Bad Address)
Error downloading code!

I don't have a JTAG board so I guess I shouldn't be using goodfet to try and flash, correct?

RFCAT and SDR dongles

Hi Guys,
Are there any plan to support SDR (I have a RTL SDR V3) ?
Thanks
Best regards.

yardstick1 firmware update - Something is talking to the RfCat dongle (Modem Manager, most likely)

Hi, I am a n00b to ys1 & rfcat. I want to install the latest firmware on the ys1.

First qn is: what is the latest firmware version? I have 0450 - is that old?

My OS is Kali 2018.2, and I'm running everything as root. I've cloned the git repo https://github.com/atlas0fd00m/rfcat
I don't have a debugger, so am just connecting the ys1 to my laptop via USB.
When I run the "make clean installRfCatYS1CCBootloader", the compilation succeeds, and the all ys1 LED's go solid (1,2,3: GREEN, RED, ORANGE) (so I assume the ys1 is in bootloader mode), but it then just loops forever with the message

"Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient."

I tried "apt-get purge modemmanager" but it made no difference.

What am I doing wrong?

----------------- below is some output to show you what I mean ---------------

confirm ys1 & rfcat is working

rfcat -r
In [3]: d.printRadioConfig()
== Hardware ==
Dongle: YARDSTICKONE
Firmware rev: 0450
Compiler: SDCCv350
Bootloader: CC-Bootloader

== Software ==
rflib rev: 65535

try firmware upgrade

cd rfcat
sudo cp etc/udev/rules.d/20-rfcat.rules /etc/udev/rules.d
sudo udevadm control --reload-rules

cd firmware
make clean installRfCatYS1CCBootloader

==== CLEANING STUFF UP ====
rm -f *.ihx *.rel *.hex *.sym *.asm *.lst *.lnk *.map *.mem *.rst
#./new_serial.py
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -DUSB_DEVICE_SERIAL_NUMBER="./new_serial.py" -c chipcon_usb.c
[--- new serial number: 0000 ---]
chipcon_usb.c:681: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG
chipcon_usb.c:765: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG
chipcon_usb.c:1286: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG
chipcon_usb.c:1286: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -c chipcon_usbdebug.c
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -c chipcon_dma.c
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -c bootloader.c
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -c cc1111rf.c
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -c global.c
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -c cc1111_aes.c

==RfCatYS1CCBootloader.hex building==
sdcc -Iinclude -DBUILD_VERSION=../revision.sh --xram-loc 0xF000 --code-loc 0x1400 appFHSSNIC.c chipcon_usb.rel chipcon_usbdebug.rel chipcon_dma.rel bootloader.rel cc1111rf.rel global.rel cc1111_aes.rel -DYARDSTICKONE -DCC1111 -DUSBDEVICE
packihx <appFHSSNIC.ihx >bins/RfCatYS1CCBootloader.hex
packihx: read 611 lines, wrote 1178: OK.
if [ ! -c /dev/RFCAT_BL_YS1 ] ; then ../rfcat --bootloader --force && sleep 1 ; fi ;
Entering RfCat Bootloader mode, ready for new image...
rfcat_bootloader /dev/RFCAT_BL_YS1 erase_all

**Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.**

Python3 Version?

Are there any plans to create a python3 version of RFCat? Or is this going to strictly be a python2 project?

No Dongle Found.

Hallo all together,
I get this output, what can it be?
Sorry ,By the Yardstick One

Error in resetup():Exception('No Dongle Found. Please insert a RFCAT dongle.',)

And No, it is not that I have to plugin/out the dongle.

I want to make a firmware update

please HELP

In [1]: print(d.reprRadioConfig())
== Hardware ==
Dongle: YARDSTICKONE
Firmware rev: 0348
Compiler: Not found! Update needed!
Bootloader: CC-Bootloader

and

/rfcat/firmware# make installys1bootloader
./bootloader_serial.py
[--- new serial number: 0004 ---]
goodfet.cc erase
Traceback (most recent call last):
File "/usr/local/bin/goodfet.cc", line 153, in
client.serInit()
File "/root/goodfet/client/GoodFET.py", line 133, in serInit
self.pyserInit(port,timeout,attemptlimit);
File "/root/goodfet/client/GoodFET.py", line 142, in pyserInit
import serial;
ImportError: No module named serial
make: *** [Makefile:536: installys1bootloader] Error 1

No welcome Message

I have downloaded the most recent version of rfcat. When I connect both my PandwaRF and Yardstick one it goes right into the command prompt and does not give me a welcome message.

Allow receiving/transmitting of raw IQ values

For my project, I'm looking at the Yard Stick One as a potential radio. But for my purposes, I need to bypass the firmware's modulation support and deal with raw IQ values, and it seems the YS1/rfcat doesn't allow this. Not setting a modulation scheme defaults to 2FSK.

I propose a MOD_NULL mode which returns the I and Q values interleaved. In transmit mode, it would do expect the same thing, interleaved values. I can't find where the modulation code is in the firmware to take a closer look at how it works.

LED 1 inactive, and errors

LED 1 is not active. This YardStick One I bought quit on me after a week. $130, and I'm peeved.

Output, no matter what I try:
Error in resetup():Exception('No Dongle Found. Please insert a RFCAT dongle.',)

I cannot solve this issue. There is nothing on the web describing my problem. I can't enter bootloader mode. This issue is prevalent no matter what computer I try it on. LED 2 and 3 light up, but not one. This doesn't make any sense, as LED 1 means "initialized" and 2 and 3 are regarding TX and RX being active. Can someone PLEASE help me?! I don't know where else to turn!

Porting nRF24L*

Hi, I've been looking into the prospect of adding nRF24L support to rfcat.
There is already custom firmware that exists for interfacing with the chip at github.com/BastilleResearch/nrf-research-firmware.
The configurable parameters available on the chip are things like frequency channel, output power, and data rate, but modulation is fixed.
I've only just started looking into this, but would like to know if you have any thoughts on the issue.

Loading Rfcat firmware using Kali Linux

I picked up two YS1s. Both had the bootloader installed, but neither had rfcat loaded.

I tried to upload rfcat firmware from Kali Linux. When installing from Kali Linux, the bootloader process seems to work properly. The hex file is built, and will be pushed to the YS1 with no issues, and the verify process comes back successful. After you restart the YS1, Kali will recognize the device as a YS1. However, most commands in rfcat will not function properly.
Pings fail, and most commands that modify the configuration of the device will cause the dongle to disconnect. I could still print the radio configuration info (d.reprRadioConfig()) and I could still run d.RFxmit() (as long as you didn't change the frequency).

However, if I ran the bootloader process from Ubuntu (16.04 in my case) the rfcat load ran just fine and both YS1s work as expected, including from the rfcat console on both my Kali instance and Ubuntu.

The main difference I noticed was that SDCC on my Kali instance is 3.8.0 and on Ubuntu it was 3.5.0.

The only other oddity I noticed was that when I dumped the radio config after pushing the firmware from Kali, the firmware revision said that it was 5535 ( I think. I didn't grab a screenshot and I don't want to reload it to find out) but after loading the firmware on Ubuntu, the revision now says 0543.

I'm not asking for a fix, I am just writing this up in case someone runs in to a similar issue since the workaround was really easy.

rfcat start and undifined Terminal

I don´t know it is an Issue. I don`t think so.
If I type
_root@kali:_cd rfcat_150225# sudo rfcat -r

I get only in Green
In (1):

Where is the starting mode with some infos about to type in orinfos about the YS1?
I have Python 2.7 I think???? or ipython?? I don´t know.
Anyone a Idea?

errors on upgrading the firmware

hi
Im stuck with a yardstickone bootloader

root@kali:~/rfcat/firmware# lsusb
Bus 002 Device 018: ID 1d50:605c OpenMoko, Inc. YARD Stick One bootloader

root@kali:~/rfcat/firmware# groups
root

root@kali:~/rfcat/firmware# rfcat_bootloader 000001 download CCBootloader-rfcat-ys1.hex

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.
c^CTraceback (most recent call last):
File "/usr/local/bin/rfcat_bootloader", line 215, in
time.sleep(6)
KeyboardInterrupt

[ 8726.842708] usb 2-1.1.1: new full-speed USB device number 16 using ehci-pci
[ 8726.954436] usb 2-1.1.1: New USB device found, idVendor=1d50, idProduct=605c, bcdDevice= 0.10
[ 8726.954441] usb 2-1.1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 8726.954444] usb 2-1.1.1: Product: YARD Stick One Bootloader
[ 8726.954447] usb 2-1.1.1: Manufacturer: Great Scott Gadgets
[ 8726.954450] usb 2-1.1.1: SerialNumber: 000001
[ 8726.956079] cdc_acm 2-1.1.1:1.0: ttyACM0: USB ACM device

on my etc/udev/rules.d/20.rfcat.rules i have this

legacy RfCats and cc1111usb

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="4715", MODE:="0660", SYMLINK+="RFCAT%n", GROUP="dialout"

modern RfCats

SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6047", MODE:="0660", SYMLINK+="RFCAT%n", GROUP="dialout"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6048", MODE:="0660", SYMLINK+="RFCAT%n", GROUP="dialout"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="605b", MODE:="0660", SYMLINK+="RFCAT%n", GROUP="dialout"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="ecc1", MODE:="0660", SYMLINK+="RFCAT%n", GROUP="dialout"

RfCat bootloader subsystem (uses it's own product id)

SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6049", MODE:="0660", SYMLINK+="RFCAT_BL_C", ENV{ID_MM_DEVICE_IGNORE}="1", GROUP="dialout"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="604a", MODE:="0660", SYMLINK+="RFCAT_BL_D", ENV{ID_MM_DEVICE_IGNORE}="1", GROUP="dialout"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="605c", MODE:="0660", SYMLINK+="RFCAT_BL_YS1", ENV{ID_MM_DEVICE_IGNORE}="1", GROUP="dialout"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="ecc0", MODE:="0660", SYMLINK+="RFCAT_BL_SRF", ENV{ID_MM_DEVICE_IGNORE}="1", GROUP="dialout"

Im not able to install the firmware

Error: Resource busy // AttributeError: RfCat instance has no attribute 'chipnum'

I have the following error when trying to use the YS1 to transmit more than once within the same script. I am not a pro at this so I think I'm just missing something after it transmits that does not make it crash when it goes into the loop for the second time (it always goes in the first time and listens with no problem). I have checked other related issues but I have not found anything that really applies to this case (most problems seemed to be after firmware updates bout I have not done any)

Error claiming usb interface:USBError(16, 'Resource busy')
Error in resetup():ChipconUsbTimeoutException()
Traceback (most recent call last):
File "project/master.py", line 113, in
inboundmessage = listen_with_timeout()
File "project/master.py", line 13, in listen_with_timeout
d = RfCat()
File "/usr/local/lib/python2.7/dist-packages/rflib/chipcon_nic.py", line 304, in init
self.mhz = CHIPmhz.get(self.chipnum)
AttributeError: RfCat instance has no attribute 'chipnum'

I am using two different YS1 with the following RadioConfig:

== Hardware ==
Dongle: YARDSTICKONE
Firmware rev: 0543
Compiler: SDCCv350
Bootloader: CC-Bootloader

== Software ==
rflib rev: 464

== Hardware ==
Dongle: YARDSTICKONE
Firmware rev: 0348
Compiler: Not found! Update needed!
Bootloader: CC-Bootloader

== Software ==
rflib rev: 464

edit: I updated the YS1 with no compiler to the following:
== Hardware ==
Dongle: YARDSTICKONE
Firmware rev: 5535
Compiler: SDCCv350
Bootloader: CC-Bootloader

== Software ==
rflib rev: 464

And the code I am using to listen is:

def listen_with_timeout():
# setup the radio
d = RfCat()
d.setFreq(435000000)
d.setMdmSyncWord(0x1985)
d.setMdmModulation(MOD_GFSK)
d.setMdmDRate(1200)
decoded_pkt = ""
pkt = ""
begintime = time.time()
maxtimewaitingforamessage = 5
try:
print("Starting to listen at time "+str(time.time()-begintime))
d.setModeTX()
pkt, _ = d.RFrecv(timeout=5000)
d.setModeIDLE()
print("Ended listening at time "+str(time.time()-begintime))
print(pkt)
except (ChipconUsbTimeoutException, TypeError):
pass
print("Power cycling YS1")
os.system("sudo /home/pi/uhubctl/./uhubctl -a cycle -p 2") # this power cycles the YS1 (well, the whole USB hub)
# done to avoid ---> Error in resetup():USBError(110, u'Operation timed out')
time.sleep(1)
return pkt

Thank you so much!!

Porting rfcat to cheap hardware?

I really love rfcat... ...although the available hardware seems to be for me quite expensive (starting with the TI CC1111EMK ~70Euro as the black chronos board is not available any more).
I wonder for some time, whether there is a possibility to port rfcat for cheaper hardware.

One device I came across is the Max!Cube ( https://www.eq-3.de/produkte/max-heizungssteuerung/max-hausloesung/bc-lgw-o-tw.html ). The device has an CC1101 and is available from 22,95 inclusive shipping (within Germany).

There is already custom firmware available for homeautomation ( https://github.com/heliflieger/a-culfw/tree/master/culfw/Devices/CUBe ).

There is also the possibility to add up to 3 further cheap CC1101 boards into the device.
That could allow to operate one CC1101 in monitor mode, while another could be sending.

Is there somebody out there having the software capabilities to merge the two projects (rfcat/MaxCube interface).

I would be interested in your thoughts and comments...

ChipconUsbTimeoutException: Timeout waiting for USB response.

hello, i have this problem. When i use RFrecv for first time it working, but second use is only this error. Nothing help. Stick are working normaly, I can transmit , but no recieve

In [1]: d.setFreq(434000000)

In [2]: d.setMdmModulation(MOD_ASK_OOK)

In [3]: d.makePktFLEN(250)

In [4]:

In [4]: d.RFrecv()
Out[4]:
('w\xd2\xbd\xd7\xef\x88\xe6\x9b\xb1\xb5\xa1\x97\x19\xfc\x8f\xa7/\xe9\\\xf1\xd5\xae\xbb\x9b\x94u\x1f\xac\xbf\xbe^\xbf\x99\xfbx\xc5W\xd9L\xe20\x8c\x06\x9a\xcc\xe9G\xe6\x1d\x13Q\x95\xb9\xf7\xf3SN\xefh\x91\x7f\xf70Xb\x7f9.r7\x01\xcc\xdf\x1a<>\xfcw\xc8zs\xfe{l\xa1G\xb8m\xed(\x98\x94D4\xd7\xf5/C\xd5g\xe2n\\\xbf\xf9U\x1d<\x93\x13N\xce=\xd3\x15\xf6\x8b/\xc1];\x92\xfa\xbc\xea\xcf\xf1\xf8\xdau\xbc}\xf7({\xa8\xefV\xcf\xb4\xd0\xfc*^\x81\x9e\xdb\xe2\xcc\xf2M[p\xdbL\xc7\x02\xc1f[\xef\x95\xa6a\xdf\x0c\xe8m\xfc\xae\x8a\xa9\xf71\x9d\xbe"\x1b\x8fT\xb6Z\xb7\xb8\xe6^E\x10\xc9/\xc2\xfd6c\x946\xde\r\xda\xcf\xef\xef6\xfeA\xc8e\xe5\x95>\xd8\xb4\xa5\xda\x96\x97\xbd^u\xa7\xf1w\xb5\x8f)\x9f_\xf0\x89\x84\x1ay\x90\x7f\xee]\xab\xab\xf5\x9f`^c\xc5\x822i\xaf\x1d\xed\x07C\x8c\x0b\xd7',
 1585221233.070124)

In [5]: d.RFrecv()
---------------------------------------------------------------------------
ChipconUsbTimeoutException                Traceback (most recent call last)
/usr/local/lib/python2.7/dist-packages/rflib/__init__.pyc in <module>()
----> 1 d.RFrecv()

/usr/local/lib/python2.7/dist-packages/rflib/chipcon_nic.pyc in RFrecv(self, timeout, blocksize)
   1398                 raise Exception("Blocksize too large. Maximum %d" % EP5OUT_BUFFER_SIZE)
   1399             self.send(APP_NIC, NIC_SET_RECV_LARGE, "%s" % struct.pack("<H",blocksize))
-> 1400         data = self.recv(APP_NIC, NIC_RECV, timeout)
   1401         # decode, if necessary
   1402         if self.endec is not None:

/usr/local/lib/python2.7/dist-packages/rflib/chipcon_usb.pyc in recv(self, app, cmd, wait)
    679                 sys.excepthook(*sys.exc_info())
    680
--> 681         raise ChipconUsbTimeoutException
    682
    683     def recvAll(self, app, cmd=None):

ChipconUsbTimeoutException: Timeout waiting for USB response.

this is stick configuration:

In [9]: print(d.reprRadioConfig())
== Hardware ==
Dongle:              YARDSTICKONE
Firmware rev:        0546
Compiler:            SDCCv350
Bootloader:          CC-Bootloader

== Software ==
rflib rev:           546

== Frequency Configuration ==
Frequency:           433999877.929688 hz (0x121555)
Channel:             0
Intermediate freq:   281250 hz
Frequency Offset:    0 +/-
Est. Freq Offset:    0

== Modem Configuration ==
Modulation:          ASK/OOK
DRate:               38360.595703 hz
ChanBW:              93750.000000 hz
DEVIATION:           20507.812500 hz
Sync Mode:           15 of 16 bits must match
Min TX Preamble:     4 bytes
Chan Spacing:        199951.171875 hz
BSLimit:             No data rate offset compensation performed
DC Filter:           enabled
Manchester Encoding: disabled
Fwd Err Correct:     disabled

== Packet Configuration ==
Sync Word:           0x0C4E
Packet Length:       250
Length Config:       Fixed Packet Mode
Configured Address:  0x0
Preamble Quality Threshold: 4 * 2
Append Status:       No
Rcvd Packet Check:   No address check
Data Whitening:      off
Packet Format:       Normal mode
CRC:                 disabled

== AES Crypto Configuration ==
AES Mode:            CBC - Cipher Block Chaining
Crypt RF Input:      off
Crypt RF Output:     off

== Radio Test Signal Configuration ==
TEST2:               0x88
TEST1:               0x31
TEST0:               0x9
VCO_SEL_CAL_EN:      0x0

== Radio State ==
     MARCSTATE:      MARC_STATE_RX (d)
     DONGLE RESPONDING:  mode :d, last error# 1

== Client State ==
========================================================================================================================
     client thread cycles:      525/44
     client errored cycles:     0
     recv_queue:                (0 bytes) ''
     trash:                     (3 blobs) "[128, 142, (1585221217.318241, '')]"
     recv_mbox                  (2 keys)  "['0x42', '0xff']"
       app 0x42 (2 records)
             [0x1]    (2 frames)  "[('B\x01\xfa\x00\x01\xd7D\xb0\xfa\x01\x12DqNI\x01r\x90\x8c\x12\xa0\n\x87\x95\xa1\xd3"
             [0x7]    (0 frames)  "[]"

       app 0xff (6 records)
             [0x80]    (0 frames)  "[]"
             [0x81]    (0 frames)  "[]"
             [0x82]    (0 frames)  "[]"
             [0x86]    (0 frames)  "[]"
             [0x88]    (0 frames)  "[]"
             [0x89]    (0 frames)  "[]"

Why is USB timeouting ? What can i do with that ?

thank you for help.

YS1 firmware update success but getting Chipcon Timeout when running rfcat

I got the latest firmware to install using the YS1 7 & 9 pin trick successfully without any errors.
rfcat_bootloader /dev/RFCAT_BL_YS1 verify bins/RfCatYS1CCBootloader.hex && rfcat_bootloader /dev/RFCAT_BL_YS1 run Verifying 0003 bytes at address: 5AF1 (OK) Skipping non data record: ':00000001FF'

However now when I plug it in and run rfcat -r it gives me the following error:

Error in resetup():ChipconUsbTimeoutException()

when i run with sudo i get:

Error in resetup():USBError(110, u'Operation timed out')

looking in /dev/ I see:
/dev/RFCAT3 (plugged into 3rd usb port)

What did I do wrong?

recipe for target 'RfCatYS1CCBootloader.hex' failed

When trying to upload newest firmware to my YS1 I do the following:
1.
pi@raspberrypi:~ $ rfcat --bootloader --force
Entering RfCat Bootloader mode, ready for new image...

CD to the firmware directory

make installRfCatYS1CCBootlader

  1. result:
    make: *** No rule to make target 'installRfCatYS1CCBootlader'. Stop.
    pi@raspberrypi:~/Downloads/rfcat-master/firmware $ make installRfCatYS1CCBootloader

==RfCatYS1CCBootloader.hex building==
sdcc -Iinclude -DBUILD_VERSION=../revision.sh --xram-loc 0xF000 --code-loc 0x1400 appFHSSNIC.c chipcon_usb.rel chipcon_usbdebug.rel chipcon_dma.rel bootloader.rel cc1111rf.rel global.rel cc1111_aes.rel -DYARDSTICKONE -DCC1111 -DUSBDEVICE

?ASlink-Warning-Undefined Global '_drawstr_PARM_2' referenced by module 'global'

?ASlink-Warning-Undefined Global '_drawstr_PARM_3' referenced by module 'global'

?ASlink-Warning-Undefined Global '_configureSPI' referenced by module 'global'

?ASlink-Warning-Undefined Global '_setDisplayStart' referenced by module 'global'

?ASlink-Warning-Undefined Global '_setIOPorts' referenced by module 'global'

?ASlink-Warning-Undefined Global '_drawstr' referenced by module 'global'

?ASlink-Warning-Undefined Global '_erasescreen' referenced by module 'global'

?ASlink-Warning-Undefined Global '_setNormalReverse' referenced by module 'global'

?ASlink-Warning-Undefined Global '_LCDReset' referenced by module 'global'
Makefile:98: recipe for target 'RfCatYS1CCBootloader.hex' failed
make: *** [RfCatYS1CCBootloader.hex] Error 1

how to use python2 instead of python3

==RfCatYS1CCBootloader.hex building==
sdcc -Iinclude -DBUILD_VERSION=`../revision.sh` --xram-loc 0xF000  --code-loc 0x1400 appFHSSNIC.c chipcon_usb.rel chipcon_usbdebug.rel chipcon_dma.rel bootloader.rel cc1111rf.rel global.rel cc1111_aes.rel -DYARDSTICKONE -DCC1111 -DUSBDEVICE
packihx <appFHSSNIC.ihx >bins/RfCatYS1CCBootloader.hex
packihx: read 628 lines, wrote 1207: OK.
if [ ! -c /dev/RFCAT_BL_YS1 ] ; then ../rfcat --bootloader --force && sleep 1 ; fi ;
Entering RfCat Bootloader mode, ready for new image...
===== RESETUP set from recv thread
rfcat_bootloader /dev/RFCAT_BL_YS1 erase_all
Traceback (most recent call last):
  File "/usr/local/bin/rfcat_bootloader", line 4, in <module>
    __import__('pkg_resources').run_script('rfcat==1.9.2', 'rfcat_bootloader')
  File "/usr/local/lib/python3.8/site-packages/pkg_resources/__init__.py", line 667, in run_script
    self.require(requires)[0].run_script(script_name, ns)
  File "/usr/local/lib/python3.8/site-packages/pkg_resources/__init__.py", line 1470, in run_script
    script_code = compile(script_text, script_filename, 'exec')
  File "/usr/local/lib/python3.8/site-packages/rfcat-1.9.2-py3.8.egg/EGG-INFO/scripts/rfcat_bootloader", line 22
    print "Writing", line[:-1],
          ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Writing", line[:-1], end=" ")?
make: *** [Makefile:371: installRfCatYS1CCBootloader] Error 1

im trying to update firmware and im getting this error, im assuming it is using python3 instead of python2 how do i fix that?

CC1111 Disconnect Issue.

Helo,

New RFCat user. I flashed RFcat on my CC1111DK Rev 1.3 dongle using a GoodFet. It seemed to work fine. Its connected to a Kali virtual machine through a USB-A to USB-C hub. I open rfcat -r and can print my config using print(d.reprRadioConfig()).

>>> print(d.reprRadioConfig())
== Hardware ==
Dongle:              DONSDONGLE
Firmware rev:        0543
Compiler:            SDCCv380
Bootloader:          Not installed

== Software ==
rflib rev:           543

However, once I attempt to set the frequency or perform any configuration changes, it resets.

>>> d.setModeIDLE()
>>> d.setFreq(433000000)
===== RESETUP set from recv thread
Error in resetup():Exception('No Dongle Found.  Please insert a RFCAT dongle.',)

In dmesg, I can see where it just disconnects. Any advice on why this happening or what I'm doing wrong? Thanks.

[  552.601600] usb 2-2.2: new full-speed USB device number 8 using uhci_hcd
[  552.707906] usb 2-2.2: not running at top speed; connect to a high speed hub
[  552.719859] usb 2-2.2: New USB device found, idVendor=1d50, idProduct=6048, bcdDevice= 1.01
[  552.719862] usb 2-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  552.719864] usb 2-2.2: Product: Dons Dongle
[  552.719865] usb 2-2.2: Manufacturer: RfCat
[  552.719867] usb 2-2.2: SerialNumber: 0000
---> After trying to d.setFreq(
[  690.503640] usb 2-2.2: USB disconnect, device number 8

.tj

ys1 cannot use cipconusb error?

Screenshot_20200531-170433

It was still available a few months ago. I do not know if it is caused by dependency problems? I have tried many methods but it won't work.

Control location of python install

Firstly, this isn't quite an issue, per se.

I'm working on installing rfcat on a raspberry pi. The pi & project I'm working with are using berryconda, and as such I'd love to be able to point the install towards the python located within the berryconda directory (/home/pi/berryconda/lib). I've been poring through the files cloned from this repo to look for where in the install process the python path might be called/determined, but so far I'm coming up empty. As such, I figured I'd drop by here and see if anyone is able to offer help.

Thanks!

Please port rfcat to use Pyside2

Hello,

in Kali Linux, we are trying to get rid of "pyside" which is deprecated in favor of Pyside2. See https://wiki.qt.io/Qt_for_Python

rfcat is using pyside in rflib/ccspecan.py

It would be nice if you could update it to use pyside2 instead. I know the code is based on some code from ubertooth but it looks like they already switched to pyside2 so you should be able to quickly adapt it as well:
greatscottgadgets/ubertooth@7985d95

Thank you for considering it.

confused about rflib versions

Hi,

Sorry this isnt really a "bug" as such, but I am trying to implement this
https://github.com/ComThings/rfcat-rolljam
on 2 yard stick ones with a rasbperry pi.

Ive come a pretty good stretch of the way, but besides strange USB timeouts once in a while, it seems there are much different versions of this "rflib". Eg, the rflib that the above repository seems to use is one from pandwaRF. Actually, it seems pandwaRF might even have their own version of rfcat as many functions used in this rfcat-rolljam python script i can only find in the pandwaRF repository. Still, the author of rfcat-rolljam says he used 2 yard stick ones and a rpi like i have here.

any tips would be very very appreciated.
btw, im not onto any shady business here. trying to make a prototype for my company

Change from chr to bytes broken code

I was trying and failing to change parameters on a new Yardstick one that I had just got. However, it would not change some of the settings. I have reflashed the stick to make sure that that is not the issue and after further investigation, it would seem that the setRFRegisters does not seem to like the change from chr to bytes.

The output of these two functions changes subtly from '\x??' to b'\x??' and the register selected won't change with the second version. I have been able to successfully change the data rate and other parameters by manually working out the values and poking them directly using the first version as input.

updating ys1- rfcat firmware: error

carlosgonz@GNU-Linux:~/Descargas/rfcat_170508/firmware$ make clean installRfCatYS1CCBootloader

==== CLEANING STUFF UP ====
rm -f *.ihx *.rel *.hex *.sym *.asm *.lst *.lnk *.map *.mem *.rst
#./new_serial.py
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -DUSB_DEVICE_SERIAL_NUMBER="./new_serial.py" -c chipcon_usb.c
[--- new serial number: 0000 ---]
In file included from chipcon_usb.c:1:
include/global.h:80:1: warning: "NOP" redefined
In file included from /usr/bin/../share/sdcc/include/mcs51/cc1110.h:29,
from include/cc1111.h:5,
from include/global.h:7,
from chipcon_usb.c:1:
/usr/bin/../share/sdcc/include/mcs51/compiler.h:88:1: error: this is the location of the previous definition
chipcon_usb.c:646: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG
chipcon_usb.c:730: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG
chipcon_usb.c:1258: warning 230: label without statement
chipcon_usb.c:1236: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG
chipcon_usb.c:1236: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -c chipcon_usbdebug.c
In file included from include/chipcon_usb.h:4,
from chipcon_usbdebug.c:1:
include/global.h:80:1: warning: "NOP" redefined
In file included from /usr/bin/../share/sdcc/include/mcs51/cc1110.h:29,
from include/cc1111.h:5,
from include/global.h:7,
from include/chipcon_usb.h:4,
from chipcon_usbdebug.c:1:
/usr/bin/../share/sdcc/include/mcs51/compiler.h:88:1: error: this is the location of the previous definition
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -c chipcon_dma.c
In file included from include/chipcon_usb.h:4,
from include/cc1111.h:48,
from include/chipcon_dma.h:5,
from chipcon_dma.c:2:
include/global.h:80:1: warning: "NOP" redefined
In file included from /usr/bin/../share/sdcc/include/mcs51/cc1110.h:29,
from include/cc1111.h:5,
from include/chipcon_dma.h:5,
from chipcon_dma.c:2:
/usr/bin/../share/sdcc/include/mcs51/compiler.h:88:1: error: this is the location of the previous definition
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -c bootloader.c
In file included from bootloader.c:1:
include/global.h:80:1: warning: "NOP" redefined
In file included from /usr/bin/../share/sdcc/include/mcs51/cc1110.h:29,
from include/cc1111.h:5,
from include/global.h:7,
from bootloader.c:1:
/usr/bin/../share/sdcc/include/mcs51/compiler.h:88:1: error: this is the location of the previous definition
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -c cc1111rf.c
In file included from include/chipcon_usb.h:4,
from include/cc1111.h:48,
from include/cc1111rf.h:4,
from cc1111rf.c:1:
include/global.h:80:1: warning: "NOP" redefined
In file included from /usr/bin/../share/sdcc/include/mcs51/cc1110.h:29,
from include/cc1111.h:5,
from include/cc1111rf.h:4,
from cc1111rf.c:1:
/usr/bin/../share/sdcc/include/mcs51/compiler.h:88:1: error: this is the location of the previous definition
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -c global.c
In file included from global.c:1:
include/global.h:80:1: warning: "NOP" redefined
In file included from /usr/bin/../share/sdcc/include/mcs51/cc1110.h:29,
from include/cc1111.h:5,
from include/global.h:7,
from global.c:1:
/usr/bin/../share/sdcc/include/mcs51/compiler.h:88:1: error: this is the location of the previous definition
global.c:35: warning 94: comparison is always true due to limited range of data type
global.c:55: warning 126: unreachable code
global.c:56: warning 126: unreachable code
global.c:56: warning 126: unreachable code
sdcc -Iinclude -DBUILD_VERSION=../revision.sh -DYARDSTICKONE -DCC1111 -DUSBDEVICE -c cc1111_aes.c
In file included from include/chipcon_usb.h:4,
from include/cc1111.h:48,
from include/cc1111_aes.h:7,
from cc1111_aes.c:2:
include/global.h:80:1: warning: "NOP" redefined
In file included from /usr/bin/../share/sdcc/include/mcs51/cc1110.h:29,
from include/cc1111.h:5,
from include/cc1111_aes.h:7,
from cc1111_aes.c:2:
/usr/bin/../share/sdcc/include/mcs51/compiler.h:88:1: error: this is the location of the previous definition

==RfCatYS1CCBootloader.hex building==
sdcc -Iinclude -DBUILD_VERSION=../revision.sh --xram-loc 0xF000 --code-loc 0x1400 appFHSSNIC.c chipcon_usb.rel chipcon_usbdebug.rel chipcon_dma.rel bootloader.rel cc1111rf.rel global.rel cc1111_aes.rel -DYARDSTICKONE -DCC1111 -DUSBDEVICE
In file included from include/chipcon_usb.h:4,
from include/cc1111.h:48,
from include/cc1111rf.h:4,
from appFHSSNIC.c:1:
include/global.h:80:1: warning: "NOP" redefined
In file included from /usr/bin/../share/sdcc/include/mcs51/cc1110.h:29,
from include/cc1111.h:5,
from include/cc1111rf.h:4,
from appFHSSNIC.c:1:
/usr/bin/../share/sdcc/include/mcs51/compiler.h:88:1: error: this is the location of the previous definition
packihx <appFHSSNIC.ihx >bins/RfCatYS1CCBootloader.hex
packihx: read 613 lines, wrote 1180: OK.
if [ ! -c /dev/RFCAT_BL_YS1 ] ; then ../rfcat --bootloader --force && sleep 1 ; fi ;
rfcat_bootloader /dev/RFCAT_BL_YS1 erase_all

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Something is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient.

Error in resetup():ChipconUsbTimeoutException()

Hi!
I did a firmware update (make clean installRfCatYS1CCBootloader).
It went well with the update, but i cant use the my Yardstick one any more.
Maybe the bootloader is corrupted? (Error in resetup():ChipconUsbTimeoutException()).
It's no response from the rfcat program on the dongle.
I running the dongle on the latest Kali,

Product: YARD Stick One
[ 1994.878685] usb 1-1.3: Manufacturer: Great Scott Gadgets
[ 1994.878696] usb 1-1.3: SerialNumber: 0000
Bus 001 Device 013: ID 1d50:605b OpenMoko, Inc.

I have reflashed the dongle couple of time, with jumper between pin 7 9.
It works, but no respond from the yardstick.
Tested on another computer same story.
so i'm little stuck here, what to do?

Maybe i must get a jtag?
Any ideas?

error when running rfcat -r

hi folks,
i am trying to cinfigure my ubuntu 18.06 before receiving the dongle,
when i run rfcat -r i get this error:
any idea?
thxx for helping

nocomp@P0wnB0x:/tools/sdr/rfcat$ rfcat -r
Traceback (most recent call last):
File "/usr/local/bin/rfcat", line 11, in
from rflib import *
File "/usr/local/lib/python3.6/dist-packages/rflib/init.py", line 240
except ImportError, e:
^
SyntaxError: invalid syntax
nocomp@P0wnB0x:
/tools/sdr/rfcat$ sudo rfcat -r
Traceback (most recent call last):
File "/usr/local/bin/rfcat", line 11, in
from rflib import *
File "/usr/local/lib/python3.6/dist-packages/rflib/init.py", line 240
except ImportError, e:
^
SyntaxError: invalid syntax
nocomp@P0wnB0x:~/tools/sdr/rfcat$

d.setEnablePktAppendStatus() not working

Hello everybody,

I am trying to test my 433Mhz garage remote, and i would like to study the RSSI and LQI coverage. I have a Yard Stick One configured with my signal parameters and i receive the keyfob and the garage transceiver frames correctly.

I have set up the d.setEnablePktAppendStatus() parameter in the rfcat interpreter and is enabled, as i can see when i run print(d.reprRadioConfig()), but the LQI and RSSI dont appears in the frames as the two last bytes together with the checksum byte.

I have tested another parameters and i compiled the last firmware again in the YT1 without success:

== Hardware ==
Dongle: YARDSTICKONE
Firmware rev: 0543
Compiler: SDCCv350
Bootloader: CC-Bootloader

I also have been reading the CC1111 manual so as to be sure that the register that d.setEnablePktAppendStatus() writes is correct (PKCTRL1), but i haven't found a solution.

May be it could be a bug?.

Please help¡ Thanks in advance...

installing rfcat on YS1 serial.serialutil.SerialException: device reports readiness to read but returned no data

~/rfcat/firmware# rfcat_bootloader /dev/RFCAT_BL_YS1 read 0x0000 0x00FF
Traceback (most recent call last):
File "/usr/local/bin/rfcat_bootloader", line 264, in
flash_read(ihx_file, serial_port, int(options[0], 16), int(options[1], 16))
File "/usr/local/bin/rfcat_bootloader", line 140, in flash_read
for line in serial_port:
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 495, in read
raise SerialException('device reports readiness to read but returned no data (device disconnected or multiple access on port?)')
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)

~/rfcat/firmware# lsusb -v -s 001:005
Bus 001 Device 005: ID 1d50:605c OpenMoko, Inc.

~/rfcat/firmware# ls -l /dev/RFCAT_BL_YS1
lrwxrwxrwx 1 root root 7 Mar 20 14:07 /dev/RFCAT_BL_YS1 -> ttyACM0
~/rfcat/firmware# ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0 Mar 20 15:18 /dev/ttyACM0

~/rfcat/firmware# groups
root dialout

YS1: resource busy, or operation timed out

When calling "sudo rfcat -r" it sometimes works fine, but usually it gives me either
"Error claimning usb interface:USBError(16, u'Resource busy')

or (more common)
Error in resetup():USBError(110, u'Operation timed out')

I'm on a Raspberry Pi running rasbian
this is my firmware:

print d.reprRadioConfig()
== Hardware ==
Dongle: YARDSTICKONE
Firmware rev: 0348
Bootloader: CC-Bootloader

== Software ==
rflib rev: 323

this issue renders the YS1 useless to me as I can't make anything automated. Hoping that someone has an idea what could be wrong.

Yard stick one, rfpower amp and Bias-t

Is the external power amp of the Yard Stick One actually used?
in cc1111rf.c:

// amplifier external to CC1111
volatile __xdata u8 rfAmpMode = 0;

This ifdef:

#ifdef YARDSTICKONE
SET_TX_AMP;

Should trigger in cc1111rf.h:

#define SET_TX_AMP do { TX_AMP_EN = rfAmpMode; RX_AMP_EN = 0; AMP_BYPASS_EN = rfAmpMode^1; } while (0)

Since rfAmpMode is 0, this disables the TX_AMP and enable the bypass of the amplifier.
Also the YSO supports bias-t to power an external power amplifier, it would be nice to make it work! I see that the register for P0_0 is not even configured (that is the pin that controls the Bias-t)
If you think I'm on the right track I could try to fix these and write the missing function to enable/disable/bypass power amp and enable/disable bias-t.

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.