Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Python Libraries for Estim Unit (ErosTek ET312, Erostek ET232, Estim Systems 2B) Control

Project Description


Python implementation of serial based control of the following devices:

  • Erostek ET-312 Electrostimulation Device
  • Erostek ET-232 Electrostimulation Device
  • Estim Systems 2B Electrostimulation Device

Using pyserial 3.1.1 (thought may work with pyserial 2.6+, but untested)

Buttshock Project Goals

If you’re going to shock yourself in the butt (or other places) for sexual pleasure, don’t you want to be able to know exactly what and how you’re doing it? Even if you can’t understand it, wouldn’t it be nice for people that do to have access to the knowledge and data they need to make sure things are safe? Why is the best encryption open source, but electrostim toys are closed?

The Buttshock project exists to reverse engineer and document eletrostim devices so that any developer that wants to control their devices can, via their own code.

Some of the goals of this project include:

  • Documenting the communications protocols (serial or otherwise)
  • Reverse engineering the firmware (where possible)
  • Mapping the circuit boards and creating schematics


To install:

$ pip install buttshock --upgrade

Package is also available on PyPi at

Python Implementation Details

This is a python implementation of the RS-232 control protocol for the ErosTek ET-312 electrostimulation box.

Documentation of the link cable, protocol, and other information is at:

This library was developed and tested using a ET-312B running v1.6 firmware. The ET-232 and 2B libraries are untested, but please let us know if you’ve used them and they do/don’t work!


buttshock-py requires the pyserial library if you want to actually connect via serial. However, it can pass packets for each box over whatever medium you like.

Repo Contents

This repo contains the following:

  • src - Source code for the library
  • examples - Example code that uses the library


tl;dr: BSD 3-Clause license

Copyright (c) 2016, Buttshock Project

See LICENSE file for full text.


0.2.0 (2016-07-05)

  • Change module layout to plan for new hardware implementations
  • Add documentation tree
  • More tests

0.1.2 (2016-07-05)

  • Fixed serial initialization issue

0.1.1 (2016-07-04)

  • CI/automation changes

0.1.0 (2016-07-04)

  • Initial Release
  • Basic ET-312 functionality

Release History

This version
History Node


History Node


History Node


History Node


History Node


Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, Size & Hash SHA256 Hash Help File Type Python Version Upload Date
(11.4 kB) Copy SHA256 Hash SHA256
Wheel py2.py3 Jul 7, 2016
(8.9 kB) Copy SHA256 Hash SHA256
Source None Jul 7, 2016

Supported By

Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Google Google Cloud Servers