Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
After placing an order through our website at www.saleae.com, you will be contacted via email with your order summary, which should include your order number with us. In addition, another email will be sent to you which will include your tracking information once your order is shipped.
If for some reason you did not receive the above email, please contact us and let us know your order number and we will be happy to share your order status with you. Your order number will be in the format of "XYZ-12345" (with XYZ representing the currency, and 12345 representing the number for your order).
If you don't have your order number handy, please share any other information on your order that might help us locate it. For example:
Shipping and billing address
Recipient name
Email address of the order placer
The date when the order was placed
Ready to purchase your own Saleae Logic? Place an order or request a quote below!
Do you have a preferred distributor? Check our list of official distributors below!
To place a direct online order with us, please follow the steps below.
Navigate to our Home page here.
Click either the Buy Logic Analyzers or Accessories button at the top of the page depending on the product of interest.
Select the destination country in the dropdown selector box underneath the Add to cart button. This selection will determine the currency that you will be charged in. If your local currency is not supported by our website, we will charge your order in USD currency.
Click Add to cart on the product you would like to purchase. This will open up a side panel cart which shows the current items in your cart.
To add additional items, click anywhere outside of the side panel cart or the "x" button at the top right of the side panel to close the side panel. Afterwards, click either the Buy Logic Analyzers or Accessories button again at the top of the page depending on the product of interest.
Repeat the above steps until all products of interest have been added to your cart.
Once the final product has been added to your cart, click the Checkout button from within the side panel cart.
Please note that, when ordering on our website, we accept payment by credit card or PayPal.
Welcome to our support site! Quickly find information using the search bar located at the top-right.
Whether you own the Saleae Logic or not, the best way to discover Saleae Logic would be to follow our Getting Started guide below.
Ready to purchase your own Saleae Logic? Place an order or request a quote below!
You can click on the link below to submit a quote request form. Once submitted, please allow some time (typically one business day) and we will reach out to you via email with your quote in PDF format.
If the quote request form is somehow not working on your end, please contact support and send in the following information.
Email address
How will you place your order? (select an option below)
Purchase Order (via wire transfer). Please see requirements here.
Online at www.saleae.com (via credit card or PayPal)
Products and Quantity
Shipping City and Country
Shipping Option (select an option below)
Use Saleae's shipping account - shipping costs will be added to the quote
Use your own shipping account (only via PO)
Shipping Carrier & Account Number (only if placing a PO)
Full Name
Company Name
Shipping Address
Billing Address
Phone Number
For reference, you may refer to the list of products we sell below.
If you plan on placing a purchase order, please review the requirements and process below before submitting your quote:
In most cases, for a smoother and faster ordering experience, we recommend ordering online through our website at www.saleae.com with a credit/purchasing card, or PayPal. Domestic US online orders completed by 12pm PST on business days ship same day.
If you are unable to pay in advance or by credit card/PayPal, we also have distributors world-wide that might be able to accommodate credit payment terms. We've provided a link to our list of distributors below.
Having mentioned the above note, and in case you are still interested in placing a direct purchase order with us, please ensure your PO meets the requirements below to avoid any processing delays.
Placing a PO is only available for companies who cannot place an order through our website by credit/purchasing card or PayPal.
Order total must be at least USD $999.
The order must be paid in USD currency.
We currently offer Net 30 Term to existing customers with a history of timely payments.
If this is your first order with us, we will generate a Proforma Invoice for you to Prepay via Wire Transfer. We will ship your order on the first business day after payment is received.
Orders placed via PO will be shipped from the US. If the order will be shipping to a country outside the US, there will likely be additional charges for duties and taxes, due on receipt.
Billing Address
Shipping Address
PO Number
Phone Number
Product Name
Quantities, and Prices in USD (Prices can be found in the support article linked below)
Shipping Option: Please either include your FedEx/UPS/DHL Account Number, OR indicate "Saleae Prepay Shipping - Add to Invoice"
Email address and contact information for your Accounts Payable Department
Payment Term: Prepay via Wire Transfer or Net 30 Days from Date of Invoice
Get a Quote (optional step - please see instructions below this article)
Create a PO document and send it to us by writing to support. You may also use the quote generated above as your PO
We will reply with a Proforma Invoice, including our bank information.
Send the payment to Saleae. Important: Please let us know via email once the payment is sent.
We will ship the order on the first business day after the payment is received.
Get a Quote (optional step - please see instructions below this article)
Create a PO document and send it to us by writing to support. You may also use the quote generated above as your PO
We will reply with an Invoice, and the order will ship.
Send the payment to Saleae. Important: Please let us know via email once the payment is sent.
Payment must be received within 30 days of the invoice date.
Please follow the instructions in the support article below to request a quote.
You can find the pricing and part numbers for all of our products in the support article below. The pricing in the support article is shown in USD currency. However, if we are shipping to a country outside of the United States, we recommend referring to the Availability section below to determine if you will be charged in your local currency, as well as the cost of shipping and taxes in your local currency.
To check the cost of shipping and taxes, follow the steps in the support article below to place an online order. When you reach the Checkout page, enter your contact information and shipping address and click "Continue to shipping method" to reach the "Shipping method" page. From there, you can select your preferred shipping method and can view the shipping cost and taxes.
For Logic analyzer products, click "Buy Logic Analyzers" at the top and select the product of interest. Afterwards, select the destination country at the bottom-right and you will find a note about its stock status and when it will ship.
For Accessories, click "Accessories" at the top and select the accessory of interest. Afterwards, select the destination country at the bottom-right and you will find a note about its stock status and when it will ship, similar to the image above.
Normally, all units are in stock. If you decide to purchase a unit when it is out of stock, there will be an additional required checkbox on the cart page to remind you that your order may be delayed.
This list contains authorized distributors selling Saleae devices. Please note that most listed distributors ship worldwide. The country shown refers to each company's main office.
Please wait for our support team's approval email (usually 1-2 business days after the tax exemption certificate is provided) before placing your tax exempt order. Our process is highlighted below.
We currently charge taxes on orders that ship to the following US states:
Arizona, California, Colorado, Florida, Illinois, Maryland, Massachusetts, Michigan, Minnesota, Pennsylvania, Texas, Washington
Online orders that will ship to all other U.S. states will not be charged taxes by default. The process below can be followed to remove tax charges for tax-exempt orders that will be shipping to the above listed US states.
Wait for our support team's approval email (usually 1-2 business days after the tax exemption certificate is provided).
For orders shipping to Europe, you may enter your VAT number by clicking on the "VAT exempt" checkbox on our product page and/or cart page below.
When requesting an invoice, please provide as much of the following information as possible to help us locate your order.
Was the order placed with a PO, over the phone, or online at www.saleae.com?
Any ID number(s) you can locate from the order
The email address from the order
The company name or purchaser name for the order
The date the order was placed
Stock status and ship date estimates can be found on and are kept up-to-date.
To check the stock status and lead time of a product, navigate to , and click either the "Buy Logic Analyzers" button or the "Accessories" button at the top depending on the product you would like to check.
The Saleae VAT number you refer to will depend on what country the order was shipped to. Please see the table below. Usually, Saleae's VAT number is needed for tax purposes, so please ensure you refer to the correct one. Please for any questions.
Please ensure that your tax exemption certificate meets the requirements for your particular state. You can refer to as an example.
Before placing your online order at , please and let us know you would like sales tax removed on future orders. Include an attachment of your tax exemption certificate.
After receiving approval, your future orders on will be tax-exempt when using the email you have provided us.
When placing your order, ensure that taxes have been successfully removed before submitting your order. If taxes still appear on our check out page, please do not submit your order and to have this resolved.
If the order has already shipped, then the sales tax has already been collected. Please and attach your tax exemption certificate. After approval, we can provide a refund of the tax charges. We can only process tax refunds for orders placed directly on our website at .
If you ordered online at , you should have received an email with a link to your invoice when you placed your order.
If you are unable to locate that email or if you placed an order over the phone or with a PO, .
Category
Value
Address
Saleae, Inc. 408 N Canal St Unit A South San Francisco, CA 94080
Phone
+1 (510) 984-2463
U.S. Tax ID Number
35-2530870
Unique Entity ID (UEI)
YLV3BL7JC9K5
Dun & Bradstreet Number
DUNS #: 048959933
CAGE Code
7PR74
Canadian GST / PST Number
770324515RT0001
For Orders Delivered To...
Saleae VAT Number
Czech Republic
CZ684355461
Germany
DE315984287
France
FR06837502848
Italy
IT02547550208
Poland
PL5263209510
Spain
N4009013F
United Kingdom
GB281123235
Netherlands
NL826132844B01
Slovakia
SK4120186664
All other European countries
NL826132844B01
We offer various discount options for our Logic products. For more details and to check if you qualify, click here.
To apply for a discount code, please click here.
Quantity discounts for all customers start at orders of 5 or more units. We offer the following:
5% off on orders of 5–9 units
10% off on orders of 10 or more units
If quantity discounts are needed, please contact support for more information.
Saleae does not offer a trade-in or upgrade plan. However, if you purchased a device within the last 180 days directly from us via purchase order or via our website at www.saleae.com, you can return it for a full refund (including shipping both ways). That will allow you to upgrade or downgrade your product at any time in the first 6 months after buying it.
Please note that this does not apply to purchases made via any of our distributors, or via any other means not mentioned above. Feel free to contact us for more information.
When an order is placed online, you should immediately receive an email confirmation. If you are missing that confirmation, contact us and we can help with that.
When your order ships, another email is sent containing the tracking number. If you have already received that email, you may use the tracking link included to monitor your shipment's progress.
If for some reason you did not receive any of the emails mentioned above, please contact us and include the order ID number, PO number, or any other identifying information so we can locate your order in our system.
Orders placed online at www.saleae.com usually ship within one business day, unless one or more of the items in the order are out of stock. If any items are out of stock, you should have been required to check a box on the cart page acknowledging this.
This list provides the Saleae part numbers, Export Classification Numbers (ECCN), Harmonized System (HS) Codes, and the price in USD for all our products.
The United States defines products using its Harmonized Tariff Schedule (HTS). An HS code, or HTS code, stands for Harmonized System or Harmonized Tariff Schedule. These codes are listed below.
Unless otherwise specified, the CoO is Taiwan
Note: The prices shown below are in USD currency. When placing an online order, the currency may be converted depending on the destination country.
The Logic analyzer models listed below are referred to as our Gen 2 Logic analyzers.
Saleae Logic 8 Black
Part Number: SAL-00111
ECCN: 3A992.a
HS Code: 9030840000
Price (USD): $499.00
Saleae Logic 8 Red
Part Number: SAL-00112
ECCN: 3A992.a
HS Code: 9030840000
Price (USD): $499.00
Saleae Logic Pro 8 Black
Part Number: SAL-00113
ECCN: 3A992.a
HS Code: 9030840000
Price (USD): $999.00
Saleae Logic Pro 8 Red
Part Number: SAL-00114
ECCN: 3A992.a
HS Code: 9030840000
Price (USD): $999.00
Saleae Logic Pro 16 Black
Part Number: SAL-00115
ECCN: 3A992.a
HS Code: 9030840000
Price (USD): $1499.00
Saleae Logic Pro 16 Red
Part Number: SAL-00116
ECCN: 3A992.a
HS Code: 9030840000
Price (USD): $1499.00
The following Saleae-Branded accessories are compatible with our Gen 2 Logic analyzers (Logic Pro 16, Logic Pro 8, Logic 8, and Logic 4).
Wire Harness - 2x4 to Test Clips (Channels 0-3)
Part Number: SAL-00097
ECCN: EAR99
HS Code: 8544420000
Price (USD): $12.95
Wire Harness - 2x4 to Test Clips (Channels 4-7)
Part Number: SAL-00098
ECCN: EAR99
HS Code: 8544420000
Price (USD): $12.95
Wire Harness - 2x4 to Test Clips (Channels 8-11)
Part Number: SAL-00099
ECCN: EAR99
HS Code: 8544420000
Price (USD): $12.95
Wire Harness - 2x4 to Test Clips (Channels 12-15)
Part Number: SAL-00100
ECCN: EAR99
HS Code: 8544420000
Price (USD): $12.95
Wire Harness (2x4) for PCBite probes to Logic Analyzers
Part Number: SAL-00187
ECCN: EAR99
HS Code: 8544420000
Price (USD): $12.95
Logic-to-2x4 Header
Part Number: SAL-00117
ECCN: EAR99
HS Code: 8544420000
Price (USD): $12.95
Logic-to-Wires
Part Number: SAL-00118
ECCN: EAR99
HS Code: 8544420000
Price (USD): $7.95
Test Clips 8-Pack
Part Number: SAL-00093
ECCN: EAR99
HS Code: 8546.90.0000
Price (USD): $23.95
Nano-size Test Clip
Part Number: SAL-00165
ECCN: EAR99
HS Code: 8546.90.0000
Price (USD): $15.99
Part Number: SAL-00185
ECCN: EAR99
HS Code: 820570
Country of Origin: Sweden
Price (USD): $149.95
Part Number: SAL-00186
ECCN: EAR99
HS Code: 903090
Country of Origin: Sweden
Price (USD): $84.95
Sensepeek PCBite Magnifier for PCBite Hands-Free Probes
Part Number: SAL-00188
HS Code: 903090
Country of Origin: Sweden
Price (USD): $64.95
Sensepeek Insulated XL Base Plate for PCBite Products & Accessories
Part Number: SAL-00189
HS Code: 903090
Country of Origin: Sweden
Price (USD): $64.95
Part Number: SAL-00173
Price (USD): $229.00
SAL-00109
SAL-00110
SALEAE001
SALEAE009
Extra Test Lead Set (Gen 1) for Original Logic and Logic16
Part Number: SAL-00094
ECCN: EAR99
HS Code: 8544.42.9000
Price (USD): $12.95
For some countries, mainly EU member countries, Saleae offers the ability to pre-pay customs, which is usually VAT.
Due to the complexity of pre-paying duties and taxes for all other countries, we do not offer the ability to pre-pay duties and taxes, and they will be due on delivery. Duties and taxes are collected differently depending on the destination country for your shipment.
When shipping the package, Saleae includes a Saleae packing list and a FedEx-generated commercial invoice, along with the normal shipping labels.
The commercial invoice includes the description, declared value, country of origin, and harmonized tariff codes for each item, as well as the quantity. This document is used to determine the taxes and duties charged.
Multiple copies are included with the shipment.
If you have any questions about the duties and taxes charged, please contact your local customs office. If you have any questions about how the items were declared or have any other questions about shipping, please let us know.
Each Saleae logic analyzer comes complete with all the accessories needed to fully utilize it—wire harnesses, clips, a USB cable, and a carry case. The complete list of what's included can be found below.
However, if you would like to purchase additional accessories, you can find the complete listing here: https://www.saleae.com/accessories
Accessories marked as "Gen 2" are designed to be used with the following Saleae devices:
Logic 8, Logic Pro 8, Logic Pro 16, and Logic 4 (discontinued)
Accessories marked "Gen 1" are for the following discontinued products
Original Logic (discontinued) and Logic16 (discontinued)
Generally, extra accessories will make it easier to switch between different projects or integrate the logic analyzer into a custom design.
The Saleae software is not sold separately. The cost of the software is included in the cost of the product and can be downloaded directly from our website below:
https://www.saleae.com/downloads
Without our products, the software can run in demo mode, allowing users to open previously saved captures or simulate a logic analyzer and its features. More information on running the software in demo mode can be found below.
To check the shipping options available in your country, simply add an item to the cart on www.saleae.com and select your country. Afterwards, click "Checkout" and enter your shipping information to view the available shipping options and shipping cost.
We unfortunately do not have the ability to add a shipping account number for online orders on our website at this time.
Saleae regularly ships internationally.
If you are shipping to a country outside the US, there will likely be additional charges for duties and taxes, due on receipt.
In some locations (i.e., most of the EU), we offer the ability to pre-pay import taxes such as VAT. If this is the case, we can charge you the customs fees and it will be clearly indicated in the shopping cart. Afterwards, you will not get a customs bill. You will see what options are available on the cart page.
As soon as your order is placed, you will receive an email from us confirming the details. If you need to make any changes, please contact us as soon as possible.
After your order ships, you will receive a second email with a tracking number and a link to check the tracking number. Please note that the tracking number may not appear in the system for up to 24 hours.
For online orders placed at www.saleae.com, you can view the shipping origin at the bottom right of the cart page underneath the Checkout button, like shown in the example image below.
The origin of the shipment is determined by the shipping country destination that is selected. Please note that you cannot select the currency, as this is automatically determined based on the destination country for the shipment.
Additionally, direct purchase orders (POs) that are processed via email will always ship from Austin, TX, and will be paid in USD currency. This applies even for shipments that will be delivered outside of the US.
Saleae observes the typical United States holidays and does not ship on the following days:
New Year's Day (January 1)
Memorial Day (last Monday in May)
Independence Day (July 4)
Labor Day (first Monday in September)
Thanksgiving Day (fourth Thursday in November)
Christmas Day (December 25).
No, unfortunately we cannot ship to PO Boxes.
Normally, orders placed before 12 pm PST on weekdays are shipped the same day. The stocking status (in stock or out of stock) is displayed under each item in your cart.
If an item is not in stock, an estimated time of shipment is displayed in your cart. This is our estimate, but sometimes it may take longer than indicated. If any of your items are out of stock, your entire order will be held until it can be shipped in full, but you may contact us to make other arrangements.
Each Saleae unit comes with all the necessary probes, wire harnesses, and a USB cable to use the unit. In addition, it comes in a custom zippered carrying case.
Logic 8
Saleae Logic 8 USB Logic Analyzer
2x 4-Channel Wire Harnesses
16x Micro-Gripper Hooks
Saleae Carrying Case
USB 2.0 Micro Cable
Getting Started Card
Logic Pro 8
Saleae Logic Pro 8 USB Logic Analyzer
2x 4-Channel Wire Harnesses
16x Micro-Gripper Hooks
Saleae Carrying Case
USB 3.0 Cable
Getting Started Card
Logic Pro 16
Saleae Logic Pro 16 USB Logic Analyzer
4x 4-Channel Wire Harnesses
32x Micro-Gripper Hooks
Saleae Carrying Case
USB 3.0 Cable
Getting Started Card
No additional accessories are required to get started. If you are interested in recommendations for additional accessories, please review this article:
Saleae does not offer an evaluation program for its products.
However, all purchases made directly from Saleae, either from our website at www.saleae.com or via PO, have a 180-day return policy. If at any time during that period you want to return the product, you can do so and receive a full refund, including shipping. For more information about returns, see this article:
"Unfortunately we are unable to ship to PO Boxes"
To quickly solve this, swap the “Address” and “Apartment, suite, etc” fields like shown below. If the address does not contain an apartment/suite number, then you can leave the "Address" field blank. This works because our cart system only checks for the word "Post" in the "Address" field.
Our website does not allow orders to be shipped to PO Boxes. Therefore, our cart system blocks the word "Post" in the "Address" field. We plan to fix this in the future, but in the meantime, you will need to use the workaround described above to place your order. Sorry for the trouble with this in the meantime!
In rare cases, you may come across the error message below when trying to purchase from . This is usually because the address contains the word "Post" in it.
The following information applies to orders placed directly on our website at www.saleae.com.
Direct Credit Card Payments
The first way to pay for orders is directly with your credit card. When you place an order with your credit card directly on our website, we process an authorization on your card using our credit card payment processor, stripe.com. At the time we ship your order, we charge against that authorization.
If your shipment does not ship within 7 days of the order placement, that authorization automatically expires. That does not mean your order is canceled, and in most cases, no further action is required. When your order does ship, if the authorization has expired, we still charge your card.
PayPal Express Checkout
When you place your order with PayPal express checkout, we only authorize your PayPal account. When your order ships, we charge against that authorization. Unlike direct payments, however, when that authorization expires, there is no way for us to charge your order without customer intervention. PayPal authorizations usually expire about 29 days after the original order was placed. There is no way for us to extend the authorization window, and reauthorizations do not change the original authorization expiration date.
In order for us to ship your order after the 29-day window, we will contact you with instructions. We will send you a link that will redirect you to PayPal's website where you can quickly make a new payment for the order. We will authorize and charge your account and then ship your order.
Payment Declined at the Time of Shipping
If we are unable to charge your order at the time of shipping due to a payment decline, we will hold your order and email you with instructions to fix the situation. If you paid directly with a credit card, we will provide you with a link where you can re-enter your payment information and verify that the charge was successfully processed.
If you paid with PayPal express and we were unable to charge your card due to payment decline, we will email you with instructions as well. The fastest way to solve this issue is to pay directly with a credit card, but alternatively, you can pay with PayPal again, although it will require you to cancel and placing a new order on our website.
Quickly get up and running with Saleae Logic and learn the basic features! You can follow along whether you own the Logic hardware or not. If you don't own a Saleae Logic, you may run the software in Demo mode.
We recommend getting started with the Setup guide below.
You may also want to check out our Tutorial Video Playlist to learn more about our software's features.
The Saleae Logic Analyzer is a powerful tool capable of capturing multiple signals from a digital circuit and displaying that information in the form of timing diagrams. Saleae’s Logic 2 software can help you decode a variety of digital protocols, including UART, SPI, I2C, 1-Wire, I2S, CAN, USB, and many more. These features can make debugging your embedded designs much simpler.
To begin, download and install the Logic 2 software from the Logic 2 download page.
Connect one or more cable harnesses to the Saleae Logic Analyzer. Note that each cable harness has an arrow on the top of the connector. This arrow should point up (same side as the Saleae logo) and to the left (the side with the ‘S’ in Saleae).
The unlabeled black wires are ground (GND), and the signal wires are labeled 0-7 (repeated if you have the Logic Pro 16). Looking straight at the ports of the analyzer, the top row of pins are labeled 0-7.
Build your test circuit, connect at least one ground wire to your circuit's ground node, and connect one or more signal wires to the nodes you wish to measure. Note that all ground pins are shorted internally. Therefore, only one ground pin needs to be connected to your test circuit at a minimum.
With the logic analyzer plugged into your computer, start the Logic 2 software. If this is the first time you are using your logic analyzer, the Logic 2 software will automatically download a calibration file for your particular analyzer. If you do not have access to the Internet, refer to the Device Calibration section of the User Guide.
Before you capture any data, click on the Capture Settings button to configure the logic analyzer. Select the sampling rate, capture duration, ports, voltage, and other settings relevant to your preferred capture parameters.
Note: only the Logic 8 Pro and Logic 16 Pro have the "Voltage" setting.
To learn more, see the Device Settings section of the User Guide.
Hover your mouse pointer over any signal data to get automatic measurements, such as pulse width, frequency, and analog voltage. You can right-click to hide & show interactive measurements. You can also add measurement windows and timing markers.
You can set the logic analyzer to begin recording only when it sees a particular edge or pulse by selecting Trigger from within the Capture Settings panel. Once the data has been collected, you can navigate directly to the trigger point by clicking on the small yellow tab above the recorded waveforms.
Once you have captured data, you can zoom in and out of your captured data by using your mouse wheel or up/down arrow keys. Click-and-drag in the viewport or use the left/right arrow keys to pan left and right.
Click the Start button to begin recording data from the logic analyzer.
Note that if you do not have a logic analyzer plugged into your computer, a popup window will appear at the bottom of the software, notifying that there is no connected device, and that demo data will be generated.
To learn more, see the section of the User Guide.
To learn more, see the section of the User Guide.
To learn more navigation actions, see the & sections of the User Guide.
To learn more, see the section of the User Guide.
Before operating your Saleae Logic product for the first time, please carefully review the safety guidelines below to avoid any injury and damage.
The input channels on Saleae Logic analyzers are not electrically isolated from each other. The Saleae Logic is also not electrically isolated from the PC.
Suggestions for electrical isolation can be found in the link below:
Original Logic & Logic16
−0.5V to +5.25V
Logic 4, Logic 8, Logic Pro 8, & Logic Pro 16
−25V to +25V
Caution: Connecting one of the input channels to voltages outside this range, even for a very short time, can result in damage to the device.
Safety Tip: If you're working with high voltages near the absolute maximum limit, first ensure that the wire harnesses are securely attached to your DUT and you've done some basic testing to make sure the clips won't pop off your connections. Afterwards, you can connect the wire harnesses to the logic analyzer.
Specifically, this is when a high current flows from the ground pin on the logic analyzer to the ground on the USB port of your computer, or vice versa. This current can easily damage the logic analyzer, your PC, and your DUT. All Saleae logic analyzers have fuses in their ground return paths, but these are not always fast enough to protect the unit from damage.
The user should be cautious of this when the logic analyzer is used in the presence of a ground loop. Specifically, this means that the logic analyzer is not the only ground path between your DUT and the host PC. Ground loops by themselves are not necessarily bad, but requires extra caution from the user.
Other USB devices (such as programmers) are connected to the DUT, or the DUT itself is plugged into the USB port on your computer. In addition to the logic analyzer's ground connection, the DUT's ground is also connected to the PC's ground through another USB port.
Non-isolated power supplies Most AC power supplies with 3-prong plugs will short the MAINS earth ground pin to the power supply ground output. That includes your PC's ground. If your DUT is powered from a 3-prong wall power supply and your PC is also plugged in, that will form another ground path. Keep in mind that if you're using a laptop that's not plugged in, even an attached external monitor or printer will create a ground loop.
When connecting or disconnecting probes, one of the ground probes from the logic analyzer is accidentally brushed against a power supply pin on the DUT, such as +5V. If there are no other ground paths between the DUT and the PC, nothing will happen. However, if there is a ground path, then current will flow from that voltage supply through the logic analyzer's ground pin, through the USB cable and the host PC, and then through the secondary ground connection—either MAIN earth ground or another USB port, back to the ground on the DUT. Basically, that is the same as shorting out the voltage supply on your DUT, but it uses the logic analyzer and your host PC as the short circuit, which could damage all components in the loop.
What if the DUT's ground reference isn't at the same voltage as the ground loop connection? For instance, if your circuit is powered by a bipolar power supply used to produce +10 volts and -10 volts, and then your circuit uses the -10 volt rail as its ground voltage, but there exists a ground loop through MAINS earth ground to the power supply's 0 volt output, then effectively the ground on your DUT is actually -10 volts relative to the host PC. Connecting Logic will immediately short out the DUT power supply and potentially damage all devices present in the loop.
In some cases, you need to record signals from multiple devices under test simultaneously with the same logic analyzer. This can be done safely, but it is important to review how both devices are powered before connecting the logic analyzer.
Since the channels in each Saleae logic analyzer are not electrically isolated from each other, all devices will need to share a common ground. If the devices under test already share a common ground, then you're all set. However, if they are floating relative each other (meaning their grounds are not directly or indirectly connected to each other), or if there is a common mode voltage setup between them, then the additional steps below are required:
If one or both of the devices under test are floating, do they need to be floating? In order to record with a logic analyzer, they will need to be common grounded to each other AND to the PC to which the logic analyzer is connected. This also means MAINS earth ground in most cases.
If one of the boards is powered from another with a ground difference such as a large negative voltage supply, then it is NOT safe to connect the logic analyzers to both devices. In addition, it is not sufficient to isolate the USB connection or the test PC from the devices. The inputs themselves need to be isolated between the device under test and the logic analyzer for at least one of the two devices under test. Please see the SI labs isolation development kit at the bottom of this article for input channel isolation.
If the devices are already common grounded to each other, then there are no special steps to follow. Just review the general ground loop information above.
Caution: If a ground loop is present, extra care should be taken, as highlighted below, before connecting the logic analyzer ground to the DUT ground.
To identify a potential ground loop between the Logic device and the DUT, you could check the resistance between the DUT ground and the Saleae Logic ground. While the Saleae Logic is connected to the PC, if the resistance reads infinite on a multi-meter, then the grounds are isolated. Otherwise, they are connected, and a ground loop exists.
If you believe there is a ground loop between the DUT and the host PC but you are uncertain if the grounds on both sides you plan to use are at the same potential, there is a quick test you can perform with a multi-meter. If you happen to have a large resistor (> 10K ohm), there is an additional test you can perform.
Connect the logic analyzer to the PC but not the DUT.
Measure the voltage between the ground pin on the logic analyzer and the ground pin on the DUT.
If there is a ground loop and you measure a voltage greater than about +/- 100mV, then a common mode ground current may occur when they are connected, damaging your equipment.
If there is a ground loop and you measure a voltage smaller than about +/- 100mV, then it is safe to connect the ground pins.
If there is not a ground loop or you are not sure there is a ground loop, then the voltage may drift significantly. If you are SURE there is no ground loop, then it is safe to connect the grounds.
If you are not sure there is a ground loop or would like to perform another test anyway, connect the resistor (~10K) between the two grounds and then measure the voltage across the resistor.
If you see a voltage that indicates a noticeable current, then there is a ground loop between devices and you should not connect the grounds together.
If you see an insignificant voltage across the resistor, then either there is no ground loop or there is a ground loop, but both grounds are at the same reference. It is safe to connect the logic analyzer.
Caution: When working in an electrically isolated state, keep in mind that floating grounds can be dangerous to the operator. When operating with equipment with a floating ground, please review and follow appropriate safety measures.
The DUT's local ground is isolated from the host PC when one of the following is true:
The DUT is battery-powered and has no other electrical connections to the host PC or devices powered from MAINS power.
The DUT is powered from an isolated power supply that does NOT short MAINS earth ground to the output ground. Bench top supplies with a separate green earth ground terminal do this. USB wall adapters also do this. Common AC power adapters (chargers, "wall warts") with 2-prong plugs are also isolated. Most power supplies do have transformers that can provide isolation if implemented properly.
The Host PC is a laptop running from a battery or is plugged into an instrumentation isolation transformer. Note that normal isolation transformers connect earth ground for human safety reasons.
Using isolated wall adapters such as USB wall adapters to power the DUT will isolate its ground from MAINS ground, although that does not always eliminate ground loops. For example, if the DUT was connected to the same computer that the Logic device is connected to, then a ground loop is formed.
Yes, it is completely safe to use the Logic device as long as both grounds are at the same voltage level and as long as you only connect the Logic ground to the ground of the DUT.
What do you do if the grounds are related but not at the same potential? You will need to fully isolate the DUT from the PC. You can do this on either side of the logic analyzer.
To isolate the digital input side of the logic analyzer, you can consider using the SI84XXISO Evaluation Kit
To isolate the USB 2.0 high-speed connection, you can consider using the Intona High Speed USB Isolator. We recently purchased this isolator and will be performing an evaluation soon. This is the first true high-speed USB 2.0 isolator on the market. All other USB 2.0 isolators are only full speed and low speed, which is insufficient for our products to operate.
Saleae products are covered by a 3-year warranty, regardless of where you purchased the product. For more information, see the article below.
If you believe your Logic hardware is broken, please follow the troubleshooting steps in the article below.
The Logic 2 software consists of the following sections:
This button allows you to check your logic analyzer's connection status with the software. Clicking it will allow you to view device information such as the device type, serial number, and calibration status.
Use the Capture Settings panel to enable or disable channels, and to configure the sample rate for the configured channels.
Click the "+" button to create new capture sessions tabs. This can be useful to manage multiple captures. To rename a tab, click the text within the tab.
Click the green "Start" button to begin a data capture.
If a logic analyzer is not connected, this button will generate simulation data as if a logic analyzer was collecting real world data.
If a logic analyzer was connected, then this would begin capturing data from its enabled input channels. After the capture has started, you can stop it before it finishes, which will retain the data to that point.
The side panel buttons offer various ways to configure your logic analyzer settings. More information on these settings can be found in the articles below.
The time scale for the displayed waveforms can be adjusted to an exact time value per 100 pixels as shown below. This gives the ability to set an exact zoom level, as opposed to using the mouse scroll wheel or using keyboard shortcuts to zoom in and out.
Several more useful tasks can be performed from the main software view, such as...
Renaming Channels
Reordering, Resizing, & Scaling Channels
Editing Colors
These features are described in our tutorial video below about organizing your workspace.
There are two important specifications to keep in mind when determining what signals can be recorded with the Saleae products and what signals could potentially damage the device.
The first is the supported IO thresholds. These define the voltage thresholds that determine what is recorded as a digital 0 and a digital 1.
The second is the over-voltage protection. It determines the maximum input voltage that can be applied without risking damage to the device.
For all Saleae products, all inputs share the same IO threshold. For products with selectable thresholds, there is no way to assign different IO thresholds to different pins at the same time. All pins share the same threshold setting.
There might be some small variation in the precise threshold voltage channel to channel. That is most notable in the Saleae Logic Pro devices because comparators with low hysteresis are used.
Logic 8 has a fixed input voltage threshold for its digital channels.
Voltage input low: 0.6V
Voltage input high: 1.2V
Over-voltage protection provides safety to +/- 25V
Notes:
The 1.2V input voltage high spec allows Logic 8 to be used directly with the CAN low channel of 3.3V CAN.
Recommended IO standards: 5.0V, 3.3V, 2.5V, 1.8V
For Logic 8's digital channels, the range between 0.6V and 1.2V results in undefined behavior. For signals that might cross this range slowly (e.g. I2C signals due to its relatively slow rise/fall times caused by its open drain topology), you may want to ensure that the software glitch filter is enabled to filter out any potential glitches that might cause decoding errors.
Logic Pro devices have three selectable voltage threshold options. This setting applies to all the input channels simultaneously.
The inputs are also implemented with comparators instead of standard CMOS buffers found on Logic 4 and Logic 8. This makes the input-low and input-high voltages very close to each other. The exact behavior of these comparators is not defined here.
1.2V Voltage Option
Voltage threshold: 0.6V
1.8V Voltage Option
Voltage threshold: 0.9V
+3.3V Voltage Option
Voltage threshold: 1.65V
Use this option for all IO standards 3.3 volts or above.
Over-voltage protection provides safety to +/- 25V
Notes:
Recommended IO standards: 5.0V, 3.3V, 2.5V, 1.8V, 1.2V
The precise threshold voltage is not calibrated and may vary as much as +/- 15%. That is more than accurate enough to record standard IO families.
Logic 4 has a simple, fixed input voltage threshold.
Voltage input low: 0.8V
Voltage input high: 2.0V
Over-voltage protection provides safety to +/- 25V
Notes:
Over-voltage protection is sufficient to use this product safely with RS-232, RS-485, 12V TTL, and other larger swing signals inside the +/- 25 V range. No adapter or additional protection is required.
Because of the voltage input high threshold of 2.0 volts, this device cannot be used with 1.8V or 1.2V logic. It also cannot be directly connected to 3.3V CAN signals. Please see our article about recording CAN for more details.
Recommended IO standards: 5.0V, 3.3V, 2.5V
The original Logic also has a fixed input voltage threshold.
Voltage input low: 0.8V
Voltage input high: 2.0V
Over-voltage protection provides safety to +/- 15V
Note: Over-voltage protection is not meant for continuous operation outside of -0.5V to 5.25V. That makes the device unsuitable for safe, direct recording of RS-232 and similar standards.
The original Logic is the only Saleae device to have internally pulled up inputs. All other Saleae devices had an internal resistance to ground. The original Logic's inputs float at about 2.4 volts, with over 100 K ohms of pull-up resistance, producing a very small pull-up effect.
The original Logic16 had two selectable threshold settings. There is approximately a 5 second delay when setting this threshold for Logic16.
1.8V to 3.6V Setting
Voltage input low: 0.7V
Voltage input high: 1.5V
3.6V to 5.0V Setting
Voltage input low: 1.4V
Voltage input high: 3.6V
Over-voltage protection provides safety to +/- 50V
Note: Over-voltage protection not meant for continuous operation outside of -0.9V to 6V. That makes the device unsuitable for safe, direct recording of RS-232 and similar standards.
When connected to the internet, the Logic software will automatically handle downloading the calibration file. In rare cases, users may need to download the calibration file manually if the software is not able to download it on its own (typically due to network security measures).
The 2nd Generation of Saleae products (Logic 4, Logic 8, Logic Pro 8, & Logic Pro 16) use calibration data generated at Saleae to display accurate AC and DC values. The 1st Generation (Original Logic and Logic16) do not require any form of calibration.
This calibration data is not stored on the device. Instead, it is stored on our servers, and the software automatically downloads this calibration data as well as checks for updates when a device is connected.
Our support team may request you to send your serial number to us to further investigate your device's calibration status. We may also have you check your device's calibration status as reported by your software below.
Click the Device Settings Panel Button on the right
Click the three dots next to your device name on the top-right
Click Device Info to view the device's calibration status and serial number
1. If the auto-download for calibration fails, a popup will appear. 2. Click "Download" to download the calibration file 3. Click "Load File" to load the calibration file 4. Check calibration status to ensure it is successful
In cases when you are not able to download the calibration file from within the Logic 2 app (for instance, if you are using an offline PC), you may download the calibration file using another PC that has internet access by using its browser. This file will need to be brought over to the offline PC. The steps are shown below:
On the PC that has the Logic 2 app installed (which may be offline), connect your Logic analyzer via USB.
Navigate to the Device Information window as we show in the Checking Calibration Status & Device Serial Number section above.
Take note of the serial number listed there.
On another PC that has internet access, enter the link below in your browser and add your Serial Number. This will prompt you to download a calibration file in .cal file format.
downloads.saleae.com/calibration/{Insert Serial Number here}.cal
Note: Device ID must be entered in lowercase.
For example: downloads.saleae.com/calibration/3b2e3a21ca4ad130.cal
Take this newly downloaded .cal file to your other offline PC and paste it to a convenient and temporary location, such as your Dekstop.
Open the Logic 2 app and connect your logic analyzer. You should be greeted by a Device Calibration Error popup below. Click Load File and navigate to the .cal file you recently downloaded. Your device should now be calibrated on this PC once the file is loaded.
OSX: /Users/YourUserName/Library/Application Support/logic/calibrations
Windows: %APPDATA%\Logic\calibrations
Linux: ~/.config/Logic/calibrations
When manually downloading the calibration file in Logic 2.x, in rare cases, your browser may open a page that looks like the image below.
In this case, please submit a Warranty Request form and we will be happy to help. This may be indicative of hardware failure and we'll most likely want to process a warranty for you.
Install the latest Logic software on a machine with Internet access.
Open the software and connect the Logic device.
Wait for the device to fully connect to the software.
Check preferences dialog to be sure the calibration data is loaded.
Close the software.
Copy all *.cal files from the calibration folder of that computer to the computer without Internet access.
Each .cal file is specific to a single device, but the .cal files are saved with the device ID in decimal and not hex, making it hard to tell which is which. If only one device has ever been connected, there will only be one .cal file.
If there is a newer calibration file available for your device, our software should automatically download it as long as it is connected to the internet. Note that we usually do not make updates to the calibration files.
In case you want to check if there is an updated calibration file available, please manually download the calibration file using the instructions above and check for the calibration status.
This is one of our top requested features for which we would love to work on at some point. However, a proper implementation is a long way off. In the meantime, we have a workaround which will allow users to adjust their calibration file's analog gain & offset manually by a Python script. More information about this can be found below:
Our devices do not require periodic recalibration. You can download our statement of calibration below.
Specifically, there is no calibration certificate. The devices do undergo a one-time factory calibration process.
If you are having trouble manually downloading the calibration file, we can send it to you. Please contact support, and we can make sure your calibration data gets updated.
The following accessories and instructions apply to the following Saleae Logic products - Logic 4, Logic 8, Logic Pro 8, and Logic Pro 16.
A 2x4 wire harness is used by Logic 4, Logic 8, Logic Pro 8, and Logic Pro 16, which are our 2nd-generation logic analyzers.
If you have Logic 4, Logic 8, or Logic Pro 8/16, then you have one or more 2x4 wire harnesses. The four black leads are ground and should be on the bottom. The four colored leads are the signal inputs and should be on the top. There is an indication of this orientation on the back of the device.
Note that the test lead color matches the channels in the software. The colors reflect the resistor color code for numbers 0–7. The numerical channel number is on the white heat shrink at the ends of the leads. The lead ends are made up of the following parts:
Molex 0016020086 crimp connectors (for typical .100-inch spaced headers/pins)
Molex 0022552081 plastic housing (2x4 - 2.54mm/.100in pitch)
The 2x4 harness has a ground lead for each channel. When signal integrity is a concern (e.g., working with high-speed digital or analog in the presence of cross-talk sources), connect a ground for each channel. Connect noisy digital inputs to leads as far as possible from leads connected to sensitive analog measurements.
Note that the ground leads are shorted internally. Therefore, when signal integrity is not crucial, only one ground lead needs to be connected to your device under test at a minimum, while the rest of the ground leads can be left floating.
All Logic products come with enough test clips for every test lead. These test clips have two metal pins that can be inserted into the connector at the end of each test lead. Only one of the metal pins needs to be connected to a single test lead connector.
If your PCB has .100-inch headers that break out signals you need to examine, you can connect the test leads directly to these pins.
In many situations, it may be difficult to connect Logic directly to your signal. Generally, in these situations, you'll want to solder a wire (typically wire-wrap wire) to an exposed pin, trace, or via, and then use Logic's test clip to connect to that wire. Alternately, you can invest in some extremely small pitch test clips such as these: Test clips - Grabbers, Hooks
The following accessories and instructions apply to our Gen 1 products - Original Logic and Logic16.
A 1x9 wire harness is used by the Original Logic and Logic16, which are our 1st-generation products.
If you have the original Logic or Logic 16, then you have one or more 1x9 wire harnesses. These harnesses are colored according to the resistor color code for 0–7. The colors match the channel colors in the software. The ground wire is grey and has a GROUND label on the white heat shrink. Turn the device over for a ground symbol, and make sure the grey test lead aligns with this symbol.
When using Logic16 with more than 8 inputs, we recommend connecting the second ground line, especially if using higher voltages (5V). That will help reduce cross-talk during any simultaneous switching events.
Several Logic accessories have been made available by our community of users. These are listed in the support article below.
The Device Settings Panel can be opened up by clicking on the Device Settings icon located on the software's side panel on the right.
From this panel, several settings can be configured, such as:
Digital Channels
Digital Sampling Rate
Digital Voltage Setting
Analog Channels
Analog Sampling Rate
Preset Saving/Loading
Capture Modes (Looping, Timer, & Trigger)
Capture Mode Specific Settings
Trim
Glitch Filter
Memory Buffer Size
Our tutorial video below demonstrates setting some basic settings such as enabling/disabling channels, settings the sampling rate and voltage, and specific settings related to the Timer capture type.
Individual digital and analog channels can be enabled and disabled as needed. In addition, the sampling rate for digital and analog channels respectively can also be adjusted.
Please note that changing these settings may affect the available sampling rates for other channels. This is due to the total amount of available bandwidth that our logic analyzers can support. When this happens, you will receive a popup about the sampling rate change like shown below.
When both digital and analog channels are enabled, changing the sampling rate for a certain type of channel (digital or analog), may also change the sampling rate for the other type (digital or analog). This is because certain digital sampling rate selections cannot be combined with certain analog sampling rates (and vice versa) due to architectural limitations.
In the example image below, selecting Digital 125 MS/s will increase (↑) the Analog sampling rate to 6.25 MS/s from its current setting. In addition, selecting Digital 6.25 MS/s will decrease (↓) the Analog sampling rate to 1.5625 MS/s from its current setting.
Logic Pro 8, Logic Pro 16, and our Original Logic16 all feature adjustable voltage thresholds, which can be set via the voltage dropdown setting next to the digital sampling rate setting. The 3.3+ Volts setting, for example, will set the voltage threshold to half that value, or 1.65 V. Our other logic analyzer models have a fixed voltage threshold, and therefore do not have this setting. For more information on the voltage setting options and thresholds, see our support article on this below.
Capture settings presets can be saved and loaded locally as needed. You can navigate to the support article below for more information on this.
For more information on the available capture modes and their specific settings, see the support article below.
Unfortunately this feature is not available in the newer Logic 2 software. If you would like to see this feature implemented, please vote on it here!
The timer mode is the simplest mode of data capture. A pre-defined duration is set by the user and the capture will end once the duration is reached. In the example video below, we set the capture duration to 5s. The recording will stop once 5s is reached.
The looping mode allows for a continuous recording into a RAM buffer, the size of which can be set by the user. Once the RAM buffer is filled, old data is deleted while new data arrives, and the capture can continue indefinitely in a continuous loop. When the capture ends, the data can be trimmed down to a certain length via the Trim data after stopping setting, keeping the most recent data.
In the example video below, we set the Memory buffer size to 500 MB. Notice that, during the capture, the memory usage does not go above the set Memory value of 500 MB during the continuous recording.
The trigger mode will continuously record data until a digital trigger is found on a single channel. The four available types of digital triggers are Rising Edge, Falling Edge, High Pulse, and Low Pulse.
In addition to the edge/pulse trigger which is set on a single digital channel, you can require other digital channels to be either HIGH or LOW to trigger a capture.
In Trigger mode, while waiting for the trigger during a capture, Logic will continue using the PC's RAM in a continuous loop. The Memory buffer size setting limits the amount of RAM usage for this process. Similar to Looping mode, once the RAM buffer is filled, old data is deleted while new data arrives, and the capture will continue indefinitely until the trigger condition is met.
Please make sure to size the "Memory buffer size" appropriately from within the capture settings panel, such that your PC does not run out of memory while waiting for a trigger.
The data that was captured before the trigger can be trimmed down in length. This allows you to specify how much of the data before the trigger is kept when the capture ends.
You can also specify the duration at which the software will continue recording data once the trigger condition is met.
Two options exist for jumping to a trigger point after your capture is complete:
Via a keyboard shortcut (On Windows it is Ctrl+J)
Via clicking on the trigger icon above your capture (shown below)
At the moment, we don't have a way of automatically jumping to trigger point after a capture. If this is a feature you would like added, please vote for it in the idea post here!
Navigate to the "Analyzers" panel and enable "Trigger View." From there, select the protocol analyzer you would like to trigger on, as well as the query value and holdoff time. HLA results can also be triggered on via this method.
Please note that Trigger View is only supported for the analyzers listed in the support article link below (Titled HLA - Analyzer Frame Format). This means that custom analyzers, including pre-installed analyzers that are not listed, will not work with Trigger View.
This is due to our Trigger View relying on a new low level analyzer framing format that we call “frame v2.” Only a handful of analyzers support “frame v2” at the moment, and these are the analyzers that work with Trigger View. We eventually want to extend Trigger View support to all analyzers in the future. Feel free to vote on this feature request here!
Open the Logic 2 software
Connect one end of the included USB cable to the Logic analyzer
Connect the other end of the USB cable to the PC's USB port. Ensure that the proper USB port is used for the specific device. Due to the amount of bandwidth required, it is recommended to directly connect to the PC's USB port rather than through a docking station or a USB hub.
Logic Pro 8 and Logic Pro 16 require a USB 3.0 port.
Logic 8 requires at least a USB 2.0 port.
Our discontinued products (Original Logic, Logic16, and Logic 4) require at least a USB 2.0 port.
Once connected to the PC, the software will begin configuring the device and the LED on Logic should turn on.
If connecting Logic Pro 8 or Logic Pro 16 to a USB 2.0 port, please read the article below. You may receive a warning notification from within the software which indicates that the available channels and sampling rate options may be limited.
Saleae Logic Analyzers consists of the products listed in this section. The products below have the capability of recording both digital and analog signals.
SAL-00111 Logic 8 Black
SAL-00112 Logic 8 Red
SAL-00113 Logic Pro 8 Black
SAL-00114 Logic Pro 8 Red
SAL-00115 Logic Pro 16 Black
SAL-00116 Logic Pro 16 Red
Datasheets & Specifications:
What's In the Box?
Logic 8 includes: Saleae Logic 8 USB Logic Analyzer, 2x 4-Channel Wire Harnesses, 16x Micro-Gripper Hooks, Saleae Carrying Case, USB 2.0 Micro Cable, & the Getting Started Card
Logic Pro 8 includes: Saleae Logic Pro 8 USB Logic Analyzer, 2x 4-Channel Wire Harnesses, 16x Micro-Gripper Hooks, Saleae Carrying Case, USB 3.0 Cable, & the Getting Started Card
Logic Pro 16 includes: Saleae Logic Pro 16 USB Logic Analyzer, 4x 4-Channel Wire Harnesses, 32x Micro-Gripper Hooks, Saleae Carrying Case, USB 3.0 Cable, & the Getting Started Card
Additional Accessories
Accessories which are not included in the box can be purchased via the Saleae Accessories store.
Parts of your captured data can be deleted as needed. In previous versions of the software, we referred to this action as a trim or crop of the data. This can be useful if only a portion of the data capture is needed. A few methods are described below.
Please keep in mind that deleting data is irreversible. Please backup any captured data by saving your original capture before deleting.
Right-clicking any point in your capture will show the option to "Delete Data." You can delete the data before this point, after this point, or all the data off-screen.
Right-clicking a timing marker will also show the option to "Delete Data." You can delete the data before the selected marker or after the marker. If your timing marker is part of a pair, you can also choose to delete data outside the pair.
Our tutorial video below demonstrates the basics of decoding data using protocol analyzers. The video covers the following topics:
The basics of protocol analyzers
Capturing and decoding SPI data
Configuring the SPI analyzer
Changing the display radix
Navigating using the Data Table
When zooming out, we've implemented a feature that merges seperate protocol bubble results into a single protocol bubble. The decoded data in the newly merged bubble will be displayed in sequential order. A number will also appear on the left side of the bubble. This number indicates how many protocol bubbles were merged together.
The glitch filter is designed to help remove noise picked up in the digital recording. This can be especially useful when using protocol analyzers, since present noise may prevent proper decoding of digital data. More information on enabling the glitch filter can be found below.
To save your current capture tab, click File > Save Capture. To open an existing capture file (.sal file format), click File > Open Capture.
The most recently used capture settings should be automatically loaded in the Logic 2 software upon opening the app. You can also save and load capture settings presets as needed.
Please note that when connecting our USB 3.0 Logic analyzers (Logic Pro 8 and Logic Pro 16) via a USB 2.0 cable, capture settings will not persist when closing and re-opening the software. In this case, we recommend saving capture setting presets as described below.
To open the Presets window, click File > Presets from the top menu.
This will open the Presets window below. From here, you can manage capture setting presets for the software. To share your presets with others, you can export your preset and import it into a new PC. Click on the 3 dots to the right of your preset to open up the options menu for that preset. This will allow you to load, rename, export, or delete you preset. To import a preset, click the Import button at the bottom of the Presets window.
Your Logic software's settings, including Logic Preset configurations, are stored in a config.json file. This config file can be found in the location described in the support article below.
You may want to backup your config file in case you wanted to backup all of the Logic Presets that you have created. This will also allow you to transfer all of your Logic Presets to another PC.
For now, please refer to the support article below for more information on this topic.
The Logic 2 software allows exporting of the entire Data Table, which can include entries from all of your added analyzers. To export the Data Table, click the 3 dots to the right of "Data," then click "Export Table."
To export raw data from your capture, click the Options button at the bottom right of the software, then click "Export Raw Data."
You will be greeted with an "Export Raw Data" window. From here, you can select the channels you would like to include in your export, the analog downsample ratio (if analog channels are included), and the time range.
Scrolling down the "Export Raw Data" window reveals more options, including the desired Export Format, as well as the Export Location. An "Always Replace" option is also available to continuously overwrite your previous exported files in the specified Export Location.
Digital channel entries are only recorded in the export file when data changes. Therefore, the number of entries in the resulting export file are dependent on the number of transitions that occur and not on the number of digital samples in the capture. This helps reduce the file size of the export file.
Having said that, we always create a new entry on the final digital sample, meaning that the last 2 entries in your raw data export file will not include any data changes on the digital channels. This is because we want to help the user determine how much data was captured and exported down the last sample, even though there were no data changes.
To export your individual analyzer results, click the 3 dots next to the particular analyzer you'd like to export data for. Then click "Export to TXT/CSV." You will be greeted with an OS prompt to save your export file.
For some analyzers (namely MDIO, CAN, and LIN), you will run into an error popup that prevents you from exporting the analyzer from the analyzer's drop down menu. In this case, we recommend exporting via the data table instead. More information on this behavior can be found below.
In case an analyzer is producing incorrect results, or in case an analyzer has gotten stuck processing data, one solution might be to restart the analyzer. This will have the same effect as deleting and re-adding the analyzer, and may allow the analyzer to get unstuck from a bad state. To restart the analyzer, click on the three dots next to the analyzer and select "Restart." if this occurs as this may be a bug in the analyzer.
To manage and open legacy capture files that were generated using the older Logic 1.x software (in .logicdata file format), you will need a copy of the older Logic 1.x software installed on your PC. Currently, we don't have a way of importing these capture files into the Logic 2 app. We're currently tracking user need for this feature in the .
A community user has generously shared their Python-based export file parser. Their GitHub repository for it can be found here:
The Logic 2 app has the ability to keep itself updated via automatic updates. This happens in the background, and a popup notification within the app will notify the user when an update has completed downloading and is ready to install.
The update can also be installed from within the app by clicking the Options button at the bottom-right, then clicking About. From there, you can click on the "Update Available!" link to re-open the pop-up window above.
In some cases, users may prefer to manually update their software. Automatic downloads of updates can be disabled by clicking the Options button at the bottom-right, then clicking Preferences. Scroll to the bottom of the Preferences window to reveal the option to disable automatic updates.
The list of keyboard shortcuts for the Logic 2 software can be viewed by clicking Help > Keyboard Shortcuts. You can also use the "?" key on your keyboard to quickly open the list of keyboard shortcuts in the software.
You may contact us directly through the Logic 2 software via the messaging icon at the bottom right.
From here you can...
Ask a question on our forum
Suggest a feature
Report a bug
Suggesting a feature and reporting bugs will open up a support ticket with us via email. We review all suggestions and bug reports! We may also contact you back for more information, or for any updates we have regarding your submission.
In the Logic 2 software, several methods exist for navigating your data. Here are some of the most common methods.
Marquee zoom (i.e. zooming in by drag-selecting a region of the waveform) is available on analog channels.
Use Alt-Drag
for XY Range Zoom
Ctrl-Drag Up/Down
for Y (Voltage) Range Zoom
Ctrl-Drag Left/Right
for X (Time) Range Zoom
Zooming In and Out
Mouse Wheel
Up/Down Arrow Keys =/- Keys
Panning Left and Right
Mouse Click and Drag
Left/Right Arrow Keys
Jump to Next Edge Offscreen
Click the "Next Edge" button, which appears when hovering the mouse on the right side of the channel (image shown below).
Ctrl + Right Arrow (Win/Linux)
Cmd + Right Arrow (MacOS)
Jump to Previous Edge Offscreen
Click the "Previous Edge" button, which appears when hovering the mouse on the left side of the channel.
Ctrl + Left Arrow (Win/Linux)
Cmd + Left Arrow (MacOS)
In addition to using the keyboard shortcuts described above for zooming in and zooming out, the Logic 2 software allows you to set a discrete zoom level. The setting for this is located at the bottom-right of the software as shown in the image below.
The Y-axis zoom level for analog channels can be adjusted by hovering over the icon shown in the image below. It will appear at the top-right of an analog channel when hovering over that channel.
While hovering over the icon, several Y-axis zoom adjustment options become available as shown in the image below. These include:
Y zoom-out / zoom-in / Y fit
XY zoom-out / zoom-in / XY fit
To view many more ways to navigate your data, you may open the Keyboard Shortcuts menu from within the Logic 2 software. More information on this can be found below.
The Logic software includes a feature to suppress short digital pulses in the recorded data. It is designed to help remove noise picked up in the digital recording. This can be especially useful when using protocol analyzers, since present noise may prevent proper decoding of digital data.
There are several sources of noise in digital captures. You can learn more about them below.
Please note that the glitch filter must be configured before the capture is taken. The glitch filter is considered a pre-capture setting and cannot be modified after the capture is completed.
You can find the glitch filter settings via the 'Device Settings' panel button to the right of the software. You will need to click the slider and add the appropriate channels to enable it.
When editing the glitch filter value, you may select a unit of time, such as ns (nanosecond), us (microsecond), and ms (millisecond). You may also use non-integer values.
The glitch filter is purely a software filter on top of the recorded data. Using the glitch filter does not actually change the data that is recorded. Instead, it sits between the recorded data set and all software components that access it.
Please note that the Logic Pro devices have narrow hysteresis thresholds, which can cause noise around transitions in some cases. When using lower voltage thresholds with larger swing signals, noise on the signal when it is in the low state can easily be picked up by the Saleae devices, even when the normal receiver of the signal rejects it. More information on our devices' voltage thresholds can be found in the support article below.
The glitch filter can be set for any individual digital channel. We recommend only adding the filter to channels where noise is a problem. The glitch filter will reject all pulses narrower than the specified width.
When a Saleae Logic device is not connected to the PC while the Logic 2 software is running, an option is provided to run the software in Demo Mode. This allows users to test the capabilities of the software without having to own our logic analyzer.
In this mode, when a data capture is run, randomly generated simulation data will populate the recording as shown below.
When an analyzer is added to digital channels while in Demo mode, the simulation data on those digital channels will generate analyzer-specific simulation data as shown in the image below.
The Logic 2 Software is supported in the following operating systems and can be downloaded via the link below.
Windows 10, & 11 (x64)
MacOS 10.14+ (Intel / ARM Apple silicon)
Ubuntu 20.04+ (64-bit)
Starting with Logic 2.4.14, we no longer support Windows 8. In particular, you will likely run into the following error message when attempting to launch the software.
The procedure entry point DiscardVirtualMemory could not be located in the dynamic link library C:\Program Files\Logic\Logic.exe.
The latest version of the Logic 2 software can be downloaded below. This is the version we recommend using.
All previous versions of the Logic 2 software can be found below, including a history of the major updates that were implemented in each version.
Instructions for installation and solutions for commonly found errors can be found in the support article below.
Please be aware of the following requirements for the Windows standalone release:
If drivers are not already installed from a previous installation of the Logic software, you will need to install the drivers manually. You can find instructions for installing our drivers in the link below.
There are a few reasons we don't want to publish a standalone version of the Logic 2 app:
We would either need to implement another auto-updater feature, or simply not support auto-update (this is not desired).
We can't automate installing pre-requisites, and when we change pre-requisites (it may happen from time to time), it creates trouble for anyone trying to update their standalone version.
Driver install will still require admin permissions and must be performed manually as mentioned above.
Normally, when the Logic software is installed, the product should simply work when connected to the PC. In case you run into any issues with this, the drivers may need to be installed manually.
A common issue in Windows is that the Saleae Logic may show up as a WestBridge or unidentified device in device manager. If this is the case, then there is a problem with the Saleae driver. Please install the driver per the methods listed in this support article.
If the drivers are installed properly, you should see Saleae Logic X USB Logic Analyzer in Device Manager, where "X" is the specific product version (4, 8, Pro 8, Pro 16).
To manually install your drivers on Windows, in case you're running into the issue above, or if you are using the standalone version of our software which doesn't install drivers automatically, you will need access to the driver files. There are several ways of obtaining them mentioned below.
For the Logic 2 software, the Drivers folder is located below:
C:\Program Files\Logic\Drivers
For the legacy Logic 1.x software (standalone), the Drivers folder is located below:
<Logic standalone folder>\Drivers\Windows
For the legacy Logic 1.x software (installed), the Drivers folder is located below:
C:\Program Files\Saleae LLC\Drivers
In case you don't have a previous installation of the Logic software, we provide the Drivers folder via the download link below.
We want to get to the new-hardware wizard for Logic. Please connect Logic to the PC and open Device Manager. In Windows 10 and 8.1, you can right-click on the Windows logo in the lower left and select Device Manager.
In Device Manager, Logic might show up right away as an unknown device with a warning icon next to it. Right-click this and select Update Driver.
Select the second option for "Browse my computer for driver software."
Use the Browse button to direct the driver wizard to the Drivers folder, which is detailed above under the section titled Location of Driver Files.
Click Next. If this fails, continue below.
Open the Device Manager. Right-click the Logic device and select Update Driver. Click "Browse my computer for driver software."
Click "Let me pick from a list of device drivers on my computer."
Next, it will ask you for the device type. Select "Universal Serial Bus Controllers."
This option is only present if no existing driver is installed. If a driver is already installed, this step will be skipped.
Now you will be presented with a window like shown below. Click the "Have Disk..." button.
This will open the install from the disk window, which will assume that you have inserted an installation disk into drive A with the drivers. Click browse, navigate to the drivers folder, which is detailed above under the section titled Location of Driver Files, and select Saleae.inf
.
At this point, you should see either just the device you have connected or both Logic and Logic16. See below for details before selecting the device you are using.
If the checkbox for "Show compatible hardware" is checked, only 1 device should be shown. If it is not the correct device, then uncheck it to see all available Saleae drivers, as shown below.
These are all of the drivers that are included with the latest beta software, which you should see in the list when the checkbox for "Show compatible hardware" is not selected.
Saleae Logic 4 USB Logic Analyzer Saleae Logic 8 USB Logic Analyzer Saleae Logic Pro 16 USB Logic Analyzer Saleae Logic Pro 8 USB Logic Analyzer Saleae Logic Start USB Logic Analyzer Saleae Logic USB Logic Analyzer Saleae Logic 16 USB Logic Analyzer
It's VERY important to select the correct product. Selecting the wrong product will cause our software to download the wrong firmware image, causing undefined behavior.
There is some naming confusion here that I would like to clear up.
If you purchased the Logic 4, the Logic Pro 8, or the Logic Pro 16, please select the driver that matches the product name.
If you purchased the new Logic 8, our logic 8 channel logic analyzer with digital and analog, released in September 2014, please use the driver "Saleae Logic 8 USB Logic Analyzer" and NOT the driver "Saleae Logic USB Logic Analyzer." If you have the original Logic unit, 8 channel, digital only, discontinued in mid-2014, please select "Saleae Logic USB Logic Analyzer" and not the one with the number 8.
The original Logic 16, also discontinued in 2014, uses the "Saleae Logic 16 USB Logic Analyzer" driver and NOT the pro version.
When connecting Logic to the USB port and starting the Logic software, the Device Manager may show the device as "Logic Pro." This is incorrect, and may cause issues with operation. The solution is to uninstall and reinstall the Logic driver on the PC.
Solution steps if the device incorrectly appears as "Logic Pro" under Device Manager:
Close Logic software, but keep the Logic device connected to the PC
Open Device Manager
Right click "Logic Pro" in the Device Manager
Click "Uninstall device"
A window will popup indicating that you are about the uninstall the device from your system
Select the checkbox that says "Delete the driver software for this device"
Click "Uninstall"
Unplug and replug the Logic analyzer
Open the Logic Software. The Logic device should now connect to the Logic software.
What OS and OS version you are using and if it is 32-bit or 64-bit.
If the device has worked on this PC before.
If the device has worked on other PCs before.
Any information that may have been displayed when the drivers failed to install.
How does the device show up under Device Manager?
The driver install logs locations are described below.
On Windows, it should be located below:
C:\WINDOWS\INF\setupapi.dev.log
When the Logic 2 software is opened, a udev rule file is checked. If the udev rule is missing, then an error message will popup to prompt you to install the proper udev rule file. The good news is that, if you see this popup, then our software was able to detect the device. Follow the instructions to open the terminal and run the command to install the udev file.
Instructions:
Ensure the Logic app is running and your Logic analyzer is connected
Open terminal
Run the command below (replace "xxxxxx" with the characters shown in your "Install a udev rules" popup window)
Close the Logic app
Log out & log back in to your PC
Disconnect and reconnect your Logic analyzer
Open the Logic app
cat /tmp/.mount_Logic-xxxxxx/resources/linux/99-SaleaeLogic.rules | sudo tee /etc/udev/rules.d/99-SaleaeLogic.rules > /dev/null && echo "finished installing /etc/udev/rules.d/99-SaleaeLogic.rules"
In case you run into any issues with installing the udev rule file using the command mentioned above, you can attempt to install it manually.
Download the udev rule file below.
Copy the file into the rules directory with the following command:
sudo cp 99-SaleaeLogic.rules /etc/udev/rules.d
Verify that the rule file was installed with the following command:
cat /etc/udev/rules.d/99-SaleaeLogic.rules
Close the Logic app
Log out & log back in to your PC
If your Logic analyzer was connected to your PC during this process, disconnect and reconnect your Logic analyzer
Open the Logic app
If at this point, the udev rule has still not installed properly, please disconnect your Logic device and restart your PC and test again afterwards.
There is no need to manage downloading firmware updates to Saleae Logic products. As long as the latest Logic software is used, your Logic hardware will continue to run on the latest firmware. You will only need to ensure you are running the latest version of the software, which can be downloaded below.
The Logic software downloads the firmware to the device every time it is connected to the PC as shown in the image below. Before this point, the Logic device is acting as a simple bootloader.
Before installing the software, please review the supported operating systems in the link below.
The Logic 2 software is provided in an AppImage format, which contains all the files needed for the software to run. In Linux, you may need to allow executing the file as a program. To do this:
1. Right-click the AppImage file and click Properties 2. Check the box that says "Allow executing file as program" as shown in the image below.
3. Alternatively, you can run the following command to allow exectuing the file as a program.
chmod +x Logic-2.x.xx-master.AppImage
4. Once the file is allowed to execute as a program, simply double-click the AppImage file to launch the software, or run it from the command line.
./Logic-2.x.xx-master.AppImage
Starting Ubuntu 24.04, you may need to run our app with the --no-sandbox
argument like so. Otherwise, the app may fail to launch.
./Logic-2.x.xx-master.AppImage --no-sandbox
In other error cases (not common), you can attempt to extract the Logic binary from the AppImage file with the following command.
./Logic-2.x.xx-master.AppImage --appimage-extract
This will dump the contents to a new directory called squashfs. You can then try to run the Logic binary directly from there.
Alternatively, you can also drag the Logic2 app file into your Applications folder in case you would like to have the app appear in Launchpad.
In case you run into any installation issues, please refer to the support article below.
For Windows 8 support, please use version 2.4.13 or prior, which can be downloaded .
The reason for this is that the version of Electron we currently use no longer supports Windows 8. Electron has released a on this topic.
If you need a standalone version of the Logic 2 app, please and we may be able to quickly build a copy if time permits.
The needs to be installed before the software will run.
In case you would like us to provide a standalone version of our Logic 2 app that is immediately available for download, feel free to . When voting for it, you can refer to Mark's comment to provide us with more information on your requirements and use case.
If at the end of this process you still get an error, please and include the following information:
In case the above steps don't help, please and send us the command line output from the udev rull install commands above.
The software is available free of charge, and can be installed on as many machines as you like. The latest release of the Logic 2 software can be downloaded !
First, double-click the Logic 2 .zip file available on our . This will extract the Logic 2 application file. From here, you can double click the Logic2 app to run it.
Simply download and run the installer available on our . We install a driver for the Logic hardware as part of the installation process, so you will be prompted to trust software from Saleae.
The Saleae Logic software includes the following protocol analyzers:
1-Wire
Asynchronous Serial
Atmel SWI (Single Wire Interface)
BISS-C
CAN (Controller Area Network)
DMX512
HD44780 Parallel LCD
HDLC (High-Level Data Link Control)
HDMI-CEC
I2C
I2S Audio / PCM
I3C (see section below)
JTAG
LIN (Local Interconnect Network)
MDIO (Management Data Input/Output)
MIDI
Manchester (Differential, Bi-Phase Space, and Bi-Phase Mark)
Modbus RTU & ASCII
PS2 Keyboard & Mouse
SMBus (includes PMBus and Smart Battery)
SPI (Serial Peripheral Interface)
SWD (ARM Serial Wire Debug)
Synchronous Parallel
USB Low Speed and Full Speed
We've worked closely with the team at Binho LLC to develop a 3rd party I3C Protocol Analyzer plugin for our Saleae Logic software! This plugin is developed by Binho LLC and will require a paid license to use it within our software. If you're interested in more details, please contact us here!
We provide user guides for a handful of our protocol analyzers, which we have listed in the link below.
Some Logic users have created their own protocol analyzers. The following list of analyzers are available but not officially supported by Saleae.
Yes. However, you will need to use a device with sufficient bandwidth to record the original signal. For instance, Logic 4 simply does not have the bandwidth required to capture and decode USB full speed. Logic 4 has a maximum digital bandwidth of 3 MHz, and USB full speed requires a digital bandwidth of at least 12.5 MHz.
Unfortunately, we have not yet ported the UNI/O analyzer from Logic v1 into the newer Logic v2 software. Specifically, it requires separate API functions that we simply haven't had the chance to implement yet. It's not on the roadmap at the moment, though we would like to gauge user interest in this before we commit to it, as porting this analyzer into Logic v2 would require quite a bit of work as compared to porting our other analyzers.
You can vote for this idea here.
The analyzer data table shows all decoded protocol data in a table format. In general, the search functionality allows you to search for content in any column, except for the 'Start' and 'Duration' columns.
To learn more about the different columns that are used for Saleae's built-in analyzers, please refer to the support article below.
By clicking the 3 dots to the right of the search bar, a few options become available.
Analyzers can be added or removed to exclude certain analyzers from search results and from appearing in the Data Table.
The ability to exclude columns from search become available (while keeping them visible in the Data Table). This is useful for excluding columns that may otherwise pollute your search results, such as the 'Type' column, or boolean columns like 'ack' or 'read'.
The ability to hide columns altogether is available by right clicking the column label in the Data Table.
This also excludes them from the search results and is useful when there are too many columns to comfortably display.
You can jump to a specific decoded bubble above the waveform from the data table by hovering your mouse over the data table row of interest. An "arrow" icon will appear to the right of the data table row while hovering over it. Click on the "arrow" icon to have the waveform view jump to the appropriate waveform bubble of interest.
You can jump to a specific row in the data table by hovering your mouse over a decoded bubble above the waveform as shown in the image below. A keyboard shortcut (OS-specific) will appear to allow you to perform this action.
The new data table has a few different column types:
Integer
Double precision floating point
Boolean
String
Byte array
Once an analyzer has been added, the user can change the display radix for that analyzer by right-clicking it in the analyzers panel in the sidebar.
The data table respects the users selected display radix. The display radix options are hexadecimal, ASCII, decimal, and binary. However, not all data types support each radix.
This list explains the supported radix of each data type.
Column Data Type
Example Value
Hex
ASCII
Decimal
Binary
Integer
42
0x000000000000002A
42
42
0b0000000000000000000000000000000000000000000000000000000000101010
Float
3.14159
3.14159
3.14159
3.14159
3.14159
Boolean
true
true
true
true
true
String
"hello world"
hello world
hello world
hello world
hello world
Byte Array
[0x48, 0x69, 0x0]
0x486900
Hi\0
72 105 0
0b1001000110100100000000
The data table respects your display radix selection for each analyzer, including high-level analyzers.
When searching, matching cells will be highlighted, and the matching section of the contents will also be highlighted.
Currently, the contents of the data table are loaded dynamically depending on which section of the data table is currently in view. This approach has some drawbacks which are especially noticeable when navigating the data table with the scrollbar.
For example, dragging the scrollbar to the bottom will not immediately jump you to the end of the data table. Instead, new data table rows will be loaded dynamically, and the scrollbar position and size will adjust accordingly. Therefore, the scrollbar will not be scaled correctly with reference to the total count of data table rows.
Workarounds:
The End and Home keys can be used to instantly jump to the end or beginning of the data table respectively.
You can jump directly to a data table row from the waveform. Details on this are described in a section of this support article above.
In case this is something you'd like us to improve, please vote for this feature request!
In most cases, you should be able to search for what you see in the table, just as you would search any other document, spreadsheet, or website. However, in order to improve performance of the search functionality, the search function has a few limitations.
In general, the search system is case-insensitive. If you would like to use case-sensitive search, please support this feature request.
Limitations:
The 'Start' and 'Duration' columns can't be searched.
when searching data shown in hexadecimal or binary, searching for a hex or binary number starting with '0x' or '0b' will force the search to match the beginning of the number. However, searching for '0', 'x', or '0x' by itself will not match the hex or binary prefix. This is a departure from the normal "search for what you see" functionality, but will eliminate accidental searches which may match with all rows of an analyzer.
when searching a byte array data type (like MISO, MOSI, and many other analyzer result types) that are displayed in the ASCII display radix, you may see dot characters ('.') in positions where the data isn't a displayable ASCII character. These characters cannot be searched for. Only ASCII characters can be searched. For example, if a cell displays 'ab...yz' you can search for 'a', 'b', 'ab', 'y', 'z', and 'yz' to match it, but you can't search for 'ab...yz' because the dot ('.') characters are unmatchable.
When using low level analyzers (LLAs) such as our Async Serial or SPI analyzer, you may notice issues with how values appear in the data table, specifically while viewing results in decimal format. More information on this can be found in the support article below.
A terminal view is available by clicking the "Terminal" button at the top-right of the data table. This allows you to view your data in a terminal-like display format.
Currently, our terminal view does not output results in time order if more than one analyzer is outputting data to the terminal. Instead, our terminal view will group the output results by analyzer. We've received requests for adding support for ensuring time order when using multple analyzers. Please feel free to share your feedback on this in the feature request post here: Feature Request - Terminal Messages to be Timeline Ordered
Our in-app terminal view has a scroll-back limit of 10,000 rows. Once the 10,000 row limit is reached, the oldest rows are deleted. However, starting version 2.4.4, we added an experimental environment variable override to specify longer terminal scrollback limits.
set SALEAE_SCROLLBACK_LIMIT=1000000
for Windows
export SALEAE_SCROLLBACK_LIMIT=1000000
for MacOS and Linux
Async Serial & Manchester - will always attempt to display in ASCII format. If the ASCII opcode doesn't exist, then it will be displayed in hex, separated by backslashes (\) as shown below. Notice that the first set of opcodes (0 to 0x1F) do not exist and are therefore displayed as hex. As the opcode increments and become valid, ASCII characters are displayed.
I2C - will display addresses and data, as well as read/write status, as shown below.
SPI - will display in hex in the format MOSI / MISO
.
For all other analyzers - content will be displayed as shown in the data table.
This only affects the last line in the terminal, and is noticeable when resizing the side panel.
For Async Serial - The last line will not text wrap properly. The last line is considered as the final stretch of data preceded by a new line or carraige return. For I2C or SPI - the last line is considered after the end of a previous transaction, and will not properly reflow when the side panel is resized. SPI data looks like it completely disappears.
We use xtermjs for our in-app terminal. According to the xtermjs GitHub issue link below, this seems to be a bug that only affects the last line of text.
If you're running into this issue, please vote/comment on our idea post here, which we are using to track this bug.
Our intention was for the terminal to respond appropriately to '\r' (CR, carriage return) and '\n' (LF, line feed) when encountered in the serial analyzer data, to help make the terminal work like a serial terminal. Having said that, serial data that only outputs '\r', but not '\n', will cause terminal text to get deleted since the missing '\n' is not moving the cursor one line forward.
To work around this in the meantime, we have released an extension via our Extensions Marketplace called "Carriage Return to Line Feed Converter."
Starting October of 2022, Saleae has released a new hardware revision of our Logic analyzers which requires the latest version of the Logic 2 software available here. This newer revision of the hardware will no longer work with our legacy Logic 1.x software.
A PDF version of the Legacy Logic 1.x User Guide is available to download below.
Starting October of 2022, Saleae has released a new hardware revision of our Logic analyzers which requires the latest version of the Logic 2 software available here. This newer revision of the hardware will no longer work with our legacy Logic 1.x software.
Changes in 1.2.40:
Adds support for revision 3.0.0 Logic hardware. More information on hardware revisions can be found in the link below.
Remove support for Decoded Protocols panel / table due to technical issues. You will notice that the checkbox for it is grayed out under Preferences > Capture.
Changes in 1.2.29 Beta:
New calibration filter implementation, should speed up analog processing by about 2.5x
Fixed bug in auto-update system
Fixed bug in the analyzer minimum sample rate warning systeAbout Real-Time Display (versions 1.2.23 - 1.2.29)
Changes in 1.2.28 Beta:
Increased USB failure logging
Minor changes
Changes in 1.2.27 Beta:
Bug Fixes:
rolled out auto-update for MacOS and Linux
JTAG analyzer no longer crashes the software for extremely long Shift IR/DR sequences, usually from FPGA bitstreams.
Changes in 1.2.26 Beta:
New Features:
Improved software update process for Windows. (Mac and Linux coming soon)
Internal - finished test coverage of features in last release.
Bug Fixes:
Fixed crash bug caused by starting the software with a Logic Pro 8 or Pro 16 connected over USB 2.0.
Changes in 1.2.25 Beta:
New Features:
Added Async RGB Led Analyzer. (supports single-wire LED protocols - WS2811, WS2812B, WS2813, TM1809, TM1804, UCS1903, LPD1886. Feedback welcome!)
made it easier to drag analog channels
made vertical scrollbars more visible in 4 areas
Bug Fixes:
fixed issue with editing units for the trigger pulse width and for the glitch filter.
Changes in 1.2.24 Beta:
New features:
The UI is now responsive during the capture. However, analyzers cannot be edited during a capture, and the options menu is disabled.
Protocol search now works during the capture (if a trigger is used, protocol processing starts when the trigger is found)
Changes in 1.2.23 Beta:
New Features:
Data is now displayed live pre-trigger
Added "Skip Trigger" feature, which lets the user manually trigger a capture.
Changed software defaults to be more useful
Bug Fixes:
dialogs and popovers should now work with tiling window managers on Linux.
Modbus analyzer issue would cause garbage strings, fixed.
Fixed bug in data_export2 socket command regarding binary exports.
Known Issues:
After a capture is complete, the annotations sidebar is inconveniently scrolled
stop_capture socket command not working in the beta branch currently.
If a Pro 16 is connected over USB 2.0, the software can crash under certain circumstances. This is fixed internally and should be fixed in 1.2.25.
Changes in 1.2.22 Beta:
Bug Fixes:
Fixed crash introduced in last version when the device 'could not keep up'.
Fixed crash where pressing Ctrl+R during the capture would crash the software.
Changes in 1.2.21 Beta:
New Features:
Converted the capture progress dialog from a modal dialog into a sidebar panel.
During captures, the start button now becomes a cancel/stop button.
During captures, the live stripchat view now supports zooming in and out. Pan position is fixed to the latest data.
Bug Fixes:
Fixed trigger crash caused by setting the pre-trigger buffer to zero samples.
Fixed crash bug in graph rendering that held up stripchart zoom.
Changes in 1.2.20 Beta:
Bug Fixes:
Analog values in CSV exports have the correct display precision.
Analog values exported as ADC samples (integers) no longer have decimal points.
Crash bug fixed in MATLAB export, the software would crash if the starting sample index was larger than an unsigned 32 bit integer. Affected captures where considerable time passed before the trigger was detected.
-disablepopups
command line argument now works properly on Linux and MacOS.
Crash bug fixed in pulse width trigger, which could crash pulses that spanned multiple USB data transfers. Bonus, the trigger is now covered with unit tests! This was a long time coming.
Changes in 1.2.19 Beta:
New Features:
First release of basic stripchart display. This keeps the latest 5 seconds of capture on the display during the recording. This is a minimal version of the new feature, and does not yet support changing the zoom level.
Changes in 1.2.18:
Bug Fixes:
Fixed crash issue when simulating the parallel analyzer with Logic 4.
Fixed clock reset problem with Logic 8, introduced in 1.2.15. For some customers, the Logic 8 was unable to record digital data under specific situation.
New Features:
Added ability to cancel a save capture operation in progress by pressing escape.
Added 3 new socket API functions: GET_CAPTURE_RANGE, GET_VIEWSTATE, SET_VIEWSTATE
Changes in 1.2.17:
Bug Fixes:
Fixed crash bug affecting the capture settings. Software would crash if only Analog channels are enabled and the capture duration was specified in samples, not in seconds or milliseconds.
Changes in 1.2.16:
Improvements:
Increased device throughput for all Logic Pro devices via Firmware & FPGA update. All Pro 8s and Pro 16s ever shipped support the higher throughout.
Added new Sample rates via FPGA update. Pro devices now support sampling at 250 MS/s and 125 MS/s. All Pro devices ever shipped support this.
This supports:
6 channels @ 500 MS/s. (previously 4 channels)
12 channels @ 250 MS/s. (250 MS/s was not previously available)
All 16 channels @ 125 MS/s (previously limited to 100 MS/s)
The Logic Pro 8 can run all 8 channels at 250 MS/s, previously limited to 100 MS/s.
Bug Fixes:
Fixed issue with memory usage estimator - when specifying the duration of the capture in samples, instead of time, when both analog and digital channels were enabled, the estimated memory usage was considerably higher than reality.
Known Issues:
The higher throughput of the Pro devices changes the available sample rates for each given performance level. This may cause issues with saved setup files, and users of the socket automation API who have hardcoded the selected sample rate and performance option. This only affects captures with both analog and digital channels enabled at the same time. This should result in saved setup files failing to apply the saved sample rate settings, but other applicable settings will still load. The socket command set_sample_rate
will NAK for sample rates that are not listed in get_all_sample_rates
.
Changes in 1.2.15:
Improvements:
Support for Logic 8, Logic Pro 8 and Logic Pro 16 Revision 2 PCBs (incremental component change, no new capabilities)
Modbus Analyzer - added support for no parity bit and one stop bit
LIN Analyzer - raised max bitrate for special applications to 1 mbps
Added the full path to calibration files to the preferences dialog
Bug Fixes:
1-Wire Analyzer did not return to normal speed from overdrive after a full length reset
Analyzer core - fixed bug in ConvertToSignedNumber that broke down for 32 bit or wider sgined words (I2S analyzer was affected)
Instantaneous measurement settings were not completely saved due to serialization issue
HDLC Analyzer - issue with CRCs and escape bytes fixed
Export bugs fixed when exporting digital data from a mixed-mode capture, when the LCM of the analog and digital sample rates was larger than the digital sample rate. CSV and binary export modes affected, timestamps and sample numbers.
Changes in 1.2.14:
Bug Fixes:
Analyzer export dialog would not function properly under specific settings and initial conditions. Now working properly.
Fixed another issue when loading a saved setup file, related to the enabled channels in the setup file and the enabled channels in the software.
Fixed bug in scripting API, where if an invalid analyzer index was passed to export_analyzer, the software could crash. Now it NAKs properly.
Fixed bug in scripting API, there was a race condition in is_analyzer_complete, that could return true if the analyzer had just started, but not yet reported its progress. This also required a trigger to be used, and for the pre-trigger buffer to be at least completely filled.
Other changes:
Console output now indicates if the socket server was able to successfully bind to the listening port - useful for debugging issues with the scripting API.
The device ID on the device calibration tab is now copy & paste-able.
Modbus analyzer - now properly supports all parity modes, and added indicators for stop bit and parity bits.
Changes in 1.2.13:
Bug Fixes:
Fixed bug on MacOS - if an error occurred when a device was connected, the device would not reconnect after subsequent attempts until the software was restarted.
Fixed bug on MacOS - on the latest MacOS release, on some computers, the device would not reliably connect to the software on each attempt.
Fixed bug when loading setups - software would crash when loading a setup file that used channels that were not currently enabled, under specific but common circumstances.
Fixed bug when loading setups - the enabled channels of Logic Pro 16 would not load when the device was plugged in over USB 2.0.
Other changes:
Improvement in USB host controller identification on Windows 10, friendly device name now displayed instead of driver name. (only affects customer support issues)
Optimization in analyzer bubble rendering path - mainly affects certain 3rd party analyzers.
Lin Analyzer now includes more information in the results when a checksum mismatch is detected.
Changes in 1.2.12:
Bug Fixes:
Fixed negative edge marker would not appear on yellow channels when color mode was enabled.
Fixed I2C analyzer bug, where decoding would go wrong when decoding during the capture process.
Fixed bug when exporting all channels of analog, over all time, when no digital channels were present. Only affected Socket API.
Fixed bug in Analyzer SDK Advance functions. It would break when moving more than 32 bits forward without changes due to U32 overflow.
Fixed bug in SPI analyzer that would crash the software if long periods of inactivity were recorded.
added extra check if thread should exit to SPI anayzer to fix issue where one particular caoture couldn't abort the SPI analyzer due to a specific data pattern.
Linux - statically link OpenSSL, now working properly on Fedora and other distros.
Windows - now including a copy of OpenSSL for QT, solving an unknown issue for several customers.
Changes in 1.2.11:
UNI/O analyzer working again.
UNIO analyzer - fixed issue where reset pulses would not be detected if the analyzer was not in the initial state.
Added exit check to USB analyzer - previously the USB analyzer couldn't be removed or restarted until it was done processing.
Fixed two issues in I2C analyzer in regards to missing ACK/NAK fields.
bug fix - bookmark display time was not offset for the trigger sample.
Fixed bug in timing marker names. It used to roll around like this: A,B,C...X,Y,Z,AA and then get stuck back at a single B due to a sorting problem. Now fixed.
Linux - fixed race condition that would cause the save capture progress dialog to never close when saving exceptionally small files
Linux: added "-workingdir" command line option to set file read/write location. The directory must already exist. Usage: ./Logic -workingdir ~/saleae
Updated UI framework to latest version.
Fixed UI problem that caused some UI elements to vanish on MacOS Sierra, for all users.
Changes in 1.2.10:
Big Fixes:
bug fix - analog export, raw ADC values now exported as integers instead of decimals.
bug fix - LIN analyzer. fixed identification of long break fields that occur after an incomplete packet.
bug fix - loading files. now file extension case is ignored.
bug fix - link in preferences for "more info" in host controllers was broken.
Linux build system - updated to Ubuntu 14, reduced dependencies.
Changes in 1.2.9:
Bug Fixes:
Fixed issue with instantaneous measurement - when measuring the width of the last digital pulse in the capture, the measurement would either fail to display or it would falsely interpret the end of the capture as a transition.
We now dual-sign the Windows installer, using both a SHA-1 and SHA 256 signature algorithm. This allows the installer to function properly on older versions of Windows (XP and Vista do not recognize SHA256 signatures) as well as the latest version of Microsoft's Edge browser.
New Features:
Moved JTAG analyzer into a separate, open source github repository. After additional changes, we will move all of our analyzer sources into this model.
Removed beta branding from the software and merged beta branch back into the master branch.
Changes in 1.2.8:
Bug Fixes:
Fix - previously, when loading a saved file that had enabled glitch filters, the glitch filter would not apply until it was reset. Now it applies correctly.
Fix - under specific circumstances, the glitch filter could introduce 0 length pulses into the data, causing problems with the display and analyzers when enabled. It now works properly.
Fix - software no longer crashes when editing a glitch filter on a channel that is assigned to a in-active analyzers
Fix - exporting analog and digital data to CSV no longer crashes when sample numbers exceed 32 bit integers.
The existing command line option "-disablepopups" now correctly blocks the opt-in dialog on first run.
Updated Windows code signing cert to use a SHA256 hash algorithm. This removes issue when downloading installer with IE 11.
New features:
Added new socket command "EXIT" to close software.
Added new command line option "-socket" to start softwarewith socket server enabled.
Added new command line option "-uploaderrors" to automatically upload any error reports when software is launched, and auto-dismiss error uploader.
Changes in 1.2.7:
Please note - 1.2.6 was a quiet pre-release. If you are updating from 1.2.5, please review the notes for both 1.2.6 and 1.2.7.
Bug Fixes:
Fixed data export bug - exporting an empty capture will no longer crash
Fixed issue introduced in 1.2.6, crash on Windows when launched in full screen mode.
Added scroll bar to preferences dialog so the window does not grow vertically with the number of installed USB hosts
Fixed bug in USB analyzer search results - no longer missing data bytes in search results
Fixed analog & digital Mixed CSV export - previously there were serious issues with this export format
Fixed bug in CSV export of just analog data - header was missing
Added support for socket API to NAK when file load failed
New bug:
Introduced bug that would cause header duplication with TSV export of analog data
Changes in 1.2.6:
Bug Fixes:
Fixed set of bugs regarding mixed mode (analog & digital) captures where the digital sample rate was not an integer multiple of the analog sample rate. Significant changes.
Fixed set of bugs regarding the trigger, where certain trigger combinations could crash the software
Fixed bug in Logic that would cause the software to crash when the trigger condition was found and certain analyzers were active
Fixed crash when SWD analyzer ran on a capture started using a trigger
Fixed bug in LIN analyzer - sync frame is now correctly 13 bits.
Fixed bug in LIN analyzer export - no longer includes inter byte space, and is now correctly
Fixed bug in LIN analyzer export - fixed packet ID
Fixed bug in LIN analyzer - checksum calculation is now correct
Fixed bug in LIN analyzer - upper 2 bits of POD were not properly masked in export.
Fixed bug in LIN analyzer export - packet received after partial packet did not export properly, and partial packets are also exported properly
Fixed bug in LIN analyzer - if a data byte also happened to be equal to a valid checksum, the packet would prematurely end.
Fixed bug in LIN analyzer - clasic identifiers 0x3C and 0x3D in LIN 2.0 mode are now properly decoded.
Fixed bug in USB annalyzer - crash under specific data conditions
Fixed bug with Windows maximize on Windows OSes where multiple monitors were used.
Fixed bug where samples processed progress display was off by a factor of 1000.
Fixed bug where the analog channels would not select the correct voltage range for display
Fixed issue in Socket API - performance level now uses values that matches the GUI (100, 80, 60, 40, 20) and not older values (100, 50, 33, 25, 20 )
Added debug print statements to the export2 socket command. Monitor the console output of the software when debugging export2 command issues.
New bug:
Introduced bug on Windows OSes where the software was closed and restarted in full screen mode, which would cause a crash.
Changes in 1.2.5:
New Feature:
Added all new socket export command that replaces the old socket export command, fixes all socket export issues.
Bug Fixes:
Fixed trigger crash when analyzers are present (introduced 1.2.4)
Fixed bug where analyzer "reset starting sample" menu option would be disabled after changing tabs
Protocol search progress no longer says "NAN"
When sampling very slowly, the progress dialog will show units smaller than millions.
the "next transition" button at the right edge of each digital channel now moves out of the way when the vertical scroll bar is present.
Protocol search export now includes the user edited names of each analyzer, instead of the analyzer proper name.
Fixed crashes on device connection on windows where USB host controller did not respond to command. Now a warning message is displayed.
Fixed crash when a capture ends with 0 samples collected, when a trigger and analyzers were present
Fixed software lockup when a capture ends with 0 samples collected, and a trigger was present (but no analyzers)
Changes in 1.2.4:
New bug:
Software will crash if a trigger is used when one or more analyzers have been added to the capture, and the pre-trigger buffer completely fills before the trigger condition is detected.
New Features:
Added user selectable digital noise filter (supports all products)
The I2C analyzer detects missing ACK/NAK bits and displays a warning.
Added easy reset button to all trigger popovers
Added puse width trigger support to socket API
Added feature to JTAG to count clocks
Start analyzer at timing marker X now is persistent, and supports any timing marker
added overdrive-only support to the 1-wire analyzer
Largest firmware update for Pro devices since launch. Dramatic stability improvements over USB 3.0.
Pro devices now consume less power when not recording, and run much cooler.
Bug Fixes:
Manchester analyzer has max bit rate of only 6 Mbit. Fixed internally, will be out in next release.
Memory estimator broken for captures with less than 1 analog sample estimated, when analog channels are active (fixed, will be released soon)
CEC analyzer looses sync if there is a false end of message without mrore data. (fixed, will be released soon)
1-wire analyzer does not support overdrive only parts. (fixed, will be released soon)
On OSX, USB timing errors can cause the software to crash when capturing over USB 3.0 (Fixed, will release soon)
On all platforms, certain USB failures will prevent further captures from working until the device is removed and reconnected (fixed, will release soon)
When exporting a combination of analog and digital data from a capture started from a trigger, the sample number or sample time display will not read correctly (fixed, will be released soon)
Fixed crash when Socket API client disconnected before response was sent
If socket API capture to file fails to write to the file due to a permissions error, it NAKs instead of ACKs now
fixed pulse width trigger issue, will now trigger if no max pulse length is specified, and the pulse never ends.
fixed bug in Socket API get analyzers & export functions. proper indexes now used
Fixed bug in ARM SWD analyzer
Fixed voltage measurement bug
fixed data export issue not respecting start time when a trigger was used to create the capture
Fixed bug where it was possible for the software to open partially off screen
Fixed OSX crash when the application would be AppNap'ed (TM) while capturing
Fixed bug where on OSX the software would crash if launched by double-clicking a *.logicsettings file
Changes in 1.2.3:
Fixed issue introduced in 1.2.2 regarding Logic Classic performance above 12 MSPS.
Added USB host specific 'quarks' support. Reset pipe now skipped only for ETRON and VIA host controllers on Windows.
Added additional debug data to improve diagnosis from remaining capture related crashes
Fixed crash bug in API when setting active channels and the trigger while the device settings popover is open
Fixed crash bug in API when setting a trigger with required states but no event(edge or pulse) defined
Fixed issue introduced in 1.2.0 that would potentially load the incorrect voltage mode on Logic16 classic when first connected.
Fixed crash when loading older save files saved on systems with custom analyzers, but loaded on systems without the custom analyzers
Fixed crash bug in API when exporting data over a file that is not currently accessible. Also suppressed warning pop-up when called from the API 9. Fixed display issue where protocol frames would appear incorrectly over graph at the start of a capture
The graphs now update as data is processed without user intervention. Previously, the graphs would only show newly processed data when the user moved the display.
Fixed issue regarding channel labels not updating properly after a channel settings reset.
Fixed issue when capturing with the API. the error dialog is suppressed and the sample rate is not automatically reduced
Fixed issue when exporting analog data. The end of the sample range is now correctly respected in all export cases
Fixed Crash bug when sampling via an API call, and then the socket is disconnected before the capture completes.
Fixed API command set_capture_seconds
Fixed crash bug regarding analog voltage measurement display issue
Fixed integer overflow crash bug in analog display system that occurs in very long, high speed analog captures.
UX - now disabling protocol search results export when all analyzers have been disabled from the search results menu
Fixed crash bug in the API when requesting progress when no session is active
Fixed API bug regarding export time span
Changes in 1.2.2:
First Windows update since 1.1.34. Change logs for 1.2.0 and 1.2.1 only include changes that affected OSX and Linux, some changes can be found in those lists, some here.
The jump from 1.1.34 to 1.2.2 represents about 6 months of development. This change log is not complete, and is just a highlight of the changes made. The development focused on bug fixing and stability. It also included lower sample rate support for analog channels to support long term data logging applications (tested up to 24 hours). It also includes the missing features from Logic 4 to allow digital-only captures. It also includes the update to QT5.4.1, a dramatically newer version of the cross platform UI framework we use. This in itself fixed a number of UI issues.
Switched to Dynamic QT5 due to bug in another required library on Windows. (affects Windows only) We will switch back to static once the bug is fixed in September. This also affects custom analyzer on Windows
Serious improvements in debugability of crash reports, better debug data and automated crash processing here at Saleae.
Updated timing restrictions in Atmel Single Wire Interface analyzer (SWI) and added support for newer commands
Fixed bug in calculation of narrowest pulse width in digital measurement
Fixed analog binary export and added format overview
Logic 4 now supports digital only captures at several sample rates.
Added lower sample rates (10 Hz to 125 KHz) to all new products to support long term recording with lower memory usage.
As mentioned in 1.2.0 and 1.2.1 change logs, data processing pipeline has massive bug fixes and improvements, focusing on proper trigger operation when analog channels are present, and multi-threaded processing of analog and digital data. The trigger also has performance improvements.
Fixed graphical bug in analog display
Fixed support for multiple instances of the software - previously protocol search results were not multi-instance compatible.
updated SPI analyzer protocol search results to display warnings and errors
Fixed bug in timing display for specific zoom levels
Fixed bug when enabling or disabling analyzers from the protocol search results
Fixed crash bug affecting specific host controllers where aborting a capture could take considerably longer than expected, causing the next capture to crash
Fixed UX issue where edited names of protocol analyzers in certain locations would not be displayed
Fixed bug in parallel analyzer - last frame now displayed
Fixed issue in JTAG analyzer with default bit order
Fixed issue where analyzers were not loaded from a logicsetup file when applying settings to an existing capture
Fixed issue with saved file name extensions
Fixed issue where Logic did not show up in Task Manager on Windows 7 (affected automation users)
Fixed display issue with analyzer processing percentage
Added Single Wire Debug (SWD) analyzer for ARM debuggers
Fixed byte ordering of SMBus analyzer
Fixed bug in UNIO analyzer
Fixed bug in LIN analyzer related to the tolerance of the size of the break field.
Fixed Modbus byte ordering affecting specific functions
Added new ROM command to 1-wire analyzer, alarm search.
API now waits for export to complete before sending ACK or NAK during export commands
Fixed issue where Ctrl+S could be used to save the capture before processing is complete
Fixed crash bug related to race condition when changing sessions
Fixed crash bug in API when setting the performance level in certain situations
Fixed Linux window manager specific issues with popovers, removed window manager specific code.
Updated the USB analyzer with several bug fixes
Fixed issue with graphical display of protocol search
Fixed flickering on OSX
Numerous UI fixes, including text display, keyboard focus, update frequency, and more
Added UI for limiting Transfer sizes on Linux - meant for troubleshooting older kernel issues.
Fixed threading crash bug in protocol search when using a number of analyzers at once.
And about 30 other things too minor to mention.
Changes in v1.2.1: (Linux and Mac only)
OSX Specific Changes:
UI performance is greatly improved!
Software no longer flickers on newer versions of OSX
Screenshots now work on newer versions of OSX
Software is now properly signed and should install without a warning.
Maximizing and minimizing now work properly.
Added support for scrolling left and right with a trackpad, as well as smooth trackpad control.
OSX build system updated to Yosemite
Added better crash reporting details to OSX
Linux Specific Changes:
Created new compatibility release for systems with older standard libraries, allowing us to continue to use more modern compilers while maintaining better backwards compatibility. (feedback welcome)
Added feature to allow successful USB 3.0 captures with older kernels (3.3 and older) This feature is in testing, and requires command line options. Please contact support for assistance if you are trying to use USB 3.0 ports on systems with older kernels.
Fixed underlying windowing issue that required window manager specific fixes. Software no longer switches on window manager.
Added additional details to usage reports (opt-in only)
Added memory allocation exception handling (in progress, mainly for crash data collection at this point)
Improved bug tracking, crash report analysis, crash and capture failure metrics.
New Features in 1.2.0: (Linux and Mac only)
Lower analog sample rates for all 4 products, down to 10 SPS
Digital only sample rates for Logic 4 for much longer digital recordings
Data processing should no longer get backlogged when using a trigger with an analog channel, allowing the trigger to be used when analog channels are active
Dramatic improvement in the digital processing speed, including multi-threading
Added features to Socket API to check for processing completion of capture and analyzers
Fixed multiple bugs in the Socket API
Updated numerous Analyzers with fixes and updated commands
Significant update to the UI framework, QT - updated from 4.8.1 to 5.4.1
Fixed an uncountable number of bugs!
Bugs fixed in 1.1.34:
Fixed bug where software would crash the second time you start a capture with an analyzer present.
Bugs fixed in 1.1.33:
Bug fixed preventing the Logic software from launching correctly on Windows 64-bit systems.
Bugs fixed in 1.1.32:
Fix for: Add 4 tabs with analyzers and data, delete the first tab. The software then crashes.
Fix for: Protocol search race condition that caused software to hang when loading a .logicdata file with disabled analyzers
Fix for: Software crashes when it does not have write/or read permissions in the folder
Fix for: Unable to drag the software across multiple monitors set up vertically.
Linux core file dumps are now compressed before uploaded.
Added option to upload usage statistics.
Fix for: Search string doesn't get erased or used after you click "show all results".
Fix for: High CPU utilization with protocol search
Fix for: Threading bugs on protocol search
Fix for: Software crashes if you copy analyzers from tab to tab in most cases
Fix for: Software crashes sometimes when lowering sample rate automatically ( after the dialog box pops up )
Fix for: Software sometimes crashes when capture is stopped very close to completion
Fix for: Software crashes when trying to load a .logicsettings file with more number of channels than currently active in the software
Fix for: Sometimes the timing display shows: "0 ms : 0 s : 200 us" the ms and s are swapped.
LED improvement - added off option.
Fix for: After saving a capture, the tab note doesn't change to the file name.
Analyzer SDK updated to work with latest version of software
Bugs Fixed in 1.1.31:
Fix for bug that caused search results to be empty when one of the analyzers were disabled All analyzers have search results now. Fix for - Duplicate results in SPI “Decoded Protocols” Fix for - Search string doesn't get erased or used after you click "show all results". Fix for - Software crashes when lowering sample rate automatically ( after the dialog box pops up ) Enabling and disabling channels will retain channel names Fix for - Software crashes sometimes when the capture is stopped at near end of completion LED settings has an OFF option Fix for - After saving a capture, the tab note doesn't change to the file name. Exporting only analog channels now works. Exporting of calibrated voltages is now supported for .csv files. Exporting data between timing markers is now supported. Fixed bug that would cause the software to freeze when loading a session. Updated Socket API to work with all supported function calls in SDK. Fixed bug where a measurement would not disappear when you hide the channel it was placed on. Fixed bug in OSX calibration where samples were not being lined up at all. Instantaneous measurement now shows up in screenshots created in the software. Channels names are now saved even when the channel no longer exists for the currently selected device. Measurements now default their name to the name of the channel they are placed on. Fix for - CPU utilization maxes out when Search is enabled. USB 3.0 support now working on Linux Added feature to enable all 16 channels of Logic Pro 16 when connected over USB 2.0. (note, this may require a powered USB 2.0 hub. Details in software preferences)
Bugs Fixed in 1.1.30
Crash bug when closing the device settings popover by clicking in the graph area with a capture active
High CPU usage even after data have finished processing and indexing for search
Switching tabs while protocol search was disabled caused crash
Bugs Fixed in 1.1.29
Bug preventing user from disabling some SPI channels
Crash bug when loading capture with unused analyzers
Protocol search: Overhaul fixing crash bugs when switching tabs, loading and saving, closing tabs, starting captures, and more
Crash bug when closing the device settings popover by clicking in the graph area with a capture active
Protocol search: Bug where changing tabs would overwrite enabled analyzers
Protocol search: Bug was that *.csv was not appended to file name
Digital processing speed for new products significantly improved. Processing with analog still slow; will no longer slow down digital in next release.
Re-enabled logic setup files
Fixed crash when stopping a capture before the trigger is active with one or more analyzers active
Calibration support added. Phase between digital and analog, DC accuracy, and analog frequency response now supported. See preferences dialog for calibration information about your device. It may be up to 1 week before all cal files are updated. See calibration documentation for more information.
Timing marker units now shown when not expanded.
Fixed issue where timing markers didn’t display properly when the trigger was used.
Fixed most common crash bug: integer sign error in analog measurement.
Updated HD44780 analyzer to support protocol results.
Fixed crash bug when changing capture settings before previous capture’s analyzers had finished.
Bugs Fixed in 1.1.28
Protocol bubbles and measurements are MUCH easier to read.
Added tool tips and shortcut info to menus.
Added preferences tab for calibration data .
Added disabled element UI support to performance selection.
Updated performance options to support 100, 80, 60, 40, and 20 percent.
Fixed bug where closing the trigger settings popover could crash the software.
Fixed bug with performance option no longer a valid message.
Fixed analyzer simulation crash bug for Logic 8 and the pro devices.
Fixed bug where changing the capture settings after capturing with an analyzer caused crashes.
Fixed bug where double-clicking a logicdata file didn't open that file.
Fixed bug where double-clicking the stop capture button crashed the software.
Fixed bug where software would crash if non-ASCII characters were in protocol search path.
Fixed analyzer simulation crash bug for all new products.
Fixed issue where software crashed when running on Windows with a username that has non-ASCII characters.
Bugs Fixed in 1.1.27
Bug added in 1.1.26 that caused software to crash on launch after upgrading from previous version, under common circumstances.
Fixed launch error "attempting to reference memory" affecting Windows 7 x64 users.
Bugs Fixed in 1.1.26
Fixed crash bug with sample rate performance options.
Fixed several display issues with voltage measurements.
Bug Fixes in 1.1.25
Logic 16 5V support has been re-implemented.
XFCE desktop where you couldn't edit timing duration.
Linux crash when run as root.
Bugs Fixed in 1.1.24
Added Logic 8 support.
UI issues with KDE desktop environment fixed.
Fixed load old file bug.
Pulse counters now use more than 4 characters to output result.
Capture save button now waits for capture to end.
Logic 4 firmware update.
Multiple issues with the settings popover.
Fixed Ubuntu 12.04 backward compatibility issue.
And many more!
Bugs Fixed in 1.1.23
Opening old save files now works.
Fixed bug where long captures would get corrupted.
Software now accurately calculates memory being used by the current capture.
Instantaneous measurement no longer displays when your mouse is over an analyzer bubble.
Fixed crash when simulating Logic 4 and then you plug in a device.
Fixed crash issues with Protocol Search disabled.
And many more!
New Features in 1.1.21+*
Logic 4 + 8 + Pro 8 + Pro 16 support
Drag N' Drop Channel Reordering
Channel selection
Scrollable channel area
Tons of new hotkeys and shortcuts
New voltage measurement tool for analog
Estimated memory usage now displayed in start popover
Processing progress for capture now displayed in titlebar
Various bug fixes
Saleae Logic supports decoding of several protocol analyzers.
Check out Saleae's officially supported protocol analyzers below.
Our passionate users have also been kind to share several community-developed protocol analyzers. Although we don't officially support these analyzers, it's a great resource for sharing your work amongst engineers!
Can't find an analyzer you need? Develop your own protocol analyzer using our Protocol Analyzer SDK below.
The Saleae Logic software supports decoding UART communications using the provided Async Serial Analyzer in the Logic software.
A UART (Universal Asynchronous Receiver/Transmitter) is a hardware block most commonly found in microcontrollers and processors. Its primary job is to send and receive asynchronous serial data to and from other UART devices via two data lines: TX and RX.
Typically, the serial data are organized in the following format:
The Async Serial Analyzer in the Logic software can be configured for various data sizes, stop bits, and parity settings. For details on setting this up, please see the article below.
The Saleae software includes a protocol analyzer for the I2C protocol.
The I2C protocol is a synchronous serial interface that uses one clock channel (SCL) and one data channel (SDA). The analyzer will parse the address, direction (read/write) data, and ACK/NAK frame from I2C transactions.
It will also use markers to indicate the start and stop conditions. This is indicated by a green circle and an orange square respectively, as shown in the image above.
In the settings, specify which input channels are used for the I2C signals SDA and SCL.
Please note that I2C addresses are displayed as 7-bit numbers. We share a support article below to help display I2C addresses as 8-bit if preferred.
If you notice that our I2C analyzer fails to decode data, a common failure point is typically glitches/noise around the SCL signal edges. I2C is particularly vulnerable to this issue due to the slow rise times caused by the open drain bus topology. The relatively slow signal rise time through the threshold region of the logic analyzer input buffer can sometimes cause these glitches to occur.
You may notice where the analyzer seems to decode less than 9 bits per frame, or incorrect results. If you notice this, carefully zoom in around each clock edge in the problem frame and check to see if there is a "glitch" or narrow pulse present next to the clock transition that is causing a clock edge to be detected as multiple edges.
This can happen for several reasons, and we've added a software feature to allow these "glitches" to be filtered out. See this article for instructions.
Besides using the glitch filter, you may also want to try reducing the sample rate of the capture, using a different IO voltage option if supported by your logic analyzer, or filtering the electrical signal at the hardware level.
If you're new to I2C, you may notice that a read operation may be preceded by a write transaction when one was not expected. That is most likely because the I2C slave you are using first expects the master to write the desired address that should be read back later. Since a read transaction is only unidirectional, the read transaction can't be used to inform the slave of the read address. In many cases, this is done by the master first starting with a write transaction where the target read address is sent to the slave, followed by a I2C "re-start" condition, which then allows the master to begin a read transaction. Now that the slave device is aware of the desired read address, it can transmit this data back to the master.
The Saleae Logic software includes a software protocol analyzer for the CAN protocol.
The Saleae CAN protocol analyzer supports standard and extended CAN identifiers.
Since the Saleae devices only have single-ended inputs and not differential inputs, the ideal way to record a CAN signal is after it has been converted to single-ended. If your design already includes CAN transceivers, you might be able to simply attach the probe on the single-ended side.
If you are unable to convert the CAN bus to single-ended, you may still be able to record one side of the CAN pair directly. See below.
Once you have recorded the CAN signal and have added the CAN analyzer, there are three settings to select.
The first is the CAN channel. It just needs to be set to the input channel that you're using to record CAN.
Second is the bit rate. If you already know the bit rate your CAN bus is using, enter it here. If not, then there are several easy ways to measure this. Since the bit rate is the inverse (reciprocal) of the bit period, you simply need to measure a single bit period in the capture and take its inverse. You need to find a single bit by itself to do this, such as the pattern 010 or 101, where the center bit will have edges on each side. You can also place a measurement over an entire CAN transaction and turn on the measurement for the narrowest pulse width.
The last setting for CAN is the inverted option. If you are recording the single-ended version of CAN, you will not need this. If you are recording CAN Low, you will not need this. If you are recording CAN High or if for some other reason the CAN signal is inverted (nominally idle high, inverted would be idle low), then check this box.
Once these settings are correct, save the settings and check the results. You should see the following fields decoded: CAN identifier (standard or extended) Control field Data field(s) CRC value ACK or NAK
If you zoom in, you should see white dots in the center of each bit frame. These are added by the analyzer so you can see where an ideal CAN receiver set to the specified bit rate would sample the bus. It's most helpful when debugging baud rate error related issues.
The red X marks indicate stuffed bits. They are supposed to be there. The X simply lets you know that the bit is not included in the data and is only added for bit stuffing.
The Saleae software includes a protocol analyzer for asynchronous serial communication.
Async serial communication is a very generic term that means any data that is transmitted serially (i.e., one bit at a time). The serial analyzer in the Saleae software is flexible, but it's ultimately designed to only decode serial data that uses the standard start bit and stop bit format. Many other features of the serial analyzer are flexible, though.
Below is a description of each setting and what it does.
Select which channel in your capture you would like to decode.
Looking to decode more than one channel? Just add a second serial analyzer!
This is the bit rate, or baud rate. If you don't know the bit rate, you can measure it manually. More information on this is described below.
This is the number of bits per word (default is "8 Bits per Transfer"). Note that this number is just the data payload and does not include the start, stop, or parity bits.
The async serial analyzer lets you select 1 stop bit, 1.5 stop bits, or 2 stop bits. The most commonly used setting is 1 stop bit.
Parity is a feature where the serial transmitter includes an extra bit of information after transmitting the data word but before the stop bit that helps the receiver detect possible bit errors caused by line noise. In Logic software, the parity bit is signified by the bolded square dot, as shown in the figure below.
No parity means no extra bit is transmitted.
Even parity means that the total number of binary ones in the data word, including the parity bit, is an even number. For instance, 0b10110101 would have an even parity bit of one because there is an odd number of ones in the data word. An extra one will make the total an even 6 ones.
Odd parity is similar to even parity, but the parity bit is used to make the total number of ones in the data word + parity bit and odd number.
Significant Bit
This simply states the order of bits on the bus, just like reading from left to right or right to left.
This is an important setting. Usually, TTL/CMOS level serial is active low, meaning that the bus idles high. Binary zeros are transmitted by pulling the line low, and binary ones are transmitted by pulling the line high. That is pretty common.
However, in some cases, such as recording RS-232 serial directly, the states are reversed. In RS-232, the line is idle low, and zeros are transmitted by pulling the line high. When recording RS-232 level signals directly, or in any other case where the channel is inverted, use this option.
MP Mode (also called multiprocessor mode, multi-drop, or 9-bit serial) is a version of serial where the most significant data bit (almost always the last bit) indicates if the preceding 8 bits is data or an address.
MDB Mode, also called multidrop bus, is basically the same as MP mode, but the address indicator bit is inverted.
In either mode, the normal serial word (usually 8 bits) is proceeded with an extra bit to distinguish address from data. In MP mode, the extra bit is set to indicate data and clear to indicate an address. The bit state is the inverse for MDB mode.
Hover your mouse over the fastest 2-bits, and then take the inverse. One way to do this is to find a 2 bits of data that are opposite in state so you can measure the distance between the two transitions and take the inverse of that measurement to get its bit rate.
The software will show auto-measurements like shown in the image below. In this case, the inverse measurement is shown to be 114.943 kHz, which is close to the bit rate of 115.200 kBits/s that the DUT was communicating at.
It's best to perform the measurement in several different spots and average the results.
As an alternative, you may also use a Baud Rate Estimate extension that was developed and kindly shared by a community user. The extension is available on our Extensions Marketplace.
In case you are unfamiliar with extensions and measurements, you may refer to the below support articles for more details on these features.
Decoded data may be offset if there are no gaps between data transactions. An example of this issue is shown in the image below. This is especially apparent when the Logic capture is started in the middle of data transmission. The workarounds would be as follows:
Make sure to start your capture before serial data transmission has begun.
Ensure that your transmitted data contains idle periods of at least 1 transaction wide. Our Async Serial will always resync on the next set of data after the idle period of 1 transaction wide.
How do I decode more than one channel of serial at once, such as RX and TX signals? To do this, add two instances of the Async Serial analyzer. More information on using multiple analyzers can be found below.
How can I set the Async Serial analyzer to decode the parity and stop bits separately from the data bits? To do this, you will need to use our Protocol Analyzer SDK to modify the behavior of the Async Serial analyzer. Currently, the software will decode an entire serial word as a single frame. The SDK can be downloaded below.
The data bus is idling low and the Async signal is inverted, causing the data to be decoded improperly. In this case, make sure the Async Serial analyzer settings are set to Inverted.
Auto baud might cause errors and may not be the most accurate method to decode data correctly. It is generally preferred to manually set the baud rate properly.
Check your data to see if parity should be enabled or disabled, and if the parity bit is even or odd. If selected incorrectly, the data will show parity errors. In the figure below, the Async Analyzer parity setting is set to odd parity, while the recorded data show an even parity.
If you're still facing decoding errors, you can compare your signal with a simulated signal generated by our Logic software. You can read more about simulating data below.
If you are using the older Logic 1.x software, there are a couple differences as described below.
Autobaud attempts to automatically determine the bit rate used in your recording.
Autobaud accomplishes this by simply running the analyzer twice when you save the settings. First, it runs the analyzer using the baud rate set in the analyzer settings (default 9600). While it's running, it keeps track of the narrowest pulse in the entire capture. Then, it sets the baud rate accordingly, assuming that the narrowest pulse is exactly 1 bit wide.
If the narrowest pulse width is only 1 sample wide, the autobaud system will fail and not attempt to adjust the baud rate. That can happen when not sampling fast enough or when there is noise in the capture.
If the narrowest pulse is within 5% of the user-entered baud rate, it will not attempt to adjust the baud rate.
If neither condition is true, the software will automatically change the baud rate to the new setting and re-run the analyzer.
To see if autobaud worked, re-open the analyzer settings. If the baud rate didn't change, then one of the above two conditions must have prevented it from working.
If you plan on using the older Logic 1.x software, you can follow the instructions below.
The older Logic 1.x software can be downloaded below. Version 1.2.29 is the last version of Logic 1.x.
Simply download and run the installer. We install a driver for the Logic hardware as part of the installation process, so you will be prompted to trust software from Saleae.
You can try running the standalone version of the software, which does not need to be installed. Simply extract it and run Logic.exe. Since the installer normally handles driver installation, you may need to manually install the driver if you use the standalone version. The driver files are included with the standalone download. The standalone version can be downloaded from the Logic 1.x Download link provided above.
Simply download, double-click, and drag the Logic software into the Application folder. It is the same as other Mac software you have installed in the past.
Download the zip file and extract it. The software will run from this folder. You can leave this folder on your desktop or move it anywhere that has write permissions. Launch the Logic software by opening the folder and double-clicking the Logic executable. You may want to make a shortcut to this executable for more convenient access.
In addition, The Logic 1.2.18 (and prior) software on Linux requires write permissions to several directories in order to run. More information on this below.
You can extract the AppImage with ./Logic-1.2.40-Linux.AppImage --appimage-extract
, which will dump the contents to a new directory called squashfs. You can then run the Logic binary directly from there.
On Linux, please keep in mind that we no longer store the settings.xml file, calibration downloads, and other temporary files in the same directory structure as the application. Those are now stored in standard directories such as the following:
~/.config/Logic
or
~/.local/share/Logic
Before using the software with Logic hardware, you'll need to give the application permission to access the device (otherwise you'll have to launch the application with sudo). To do this, unplug any attached Logic device(s). From the command line, navigate to the Driver folder and run the script installdriver.sh.
Please be aware of the following requirements for the Windows standalone release:
If drivers are not already installed from a previous installation of the Logic software, you will need to install the drivers manually. You can find instructions for installing our drivers in the link below.
You can extract the AppImage with ./Logic-1.2.40-Linux.AppImage --appimage-extract
, which will dump the contents to a new directory called squashfs. You can then run the Logic binary directly from there.
On Linux, please keep in mind that we no longer store the settings.xml file, calibration downloads, and other temporary files in the same directory structure as the application. Those are now stored in standard directories such as the following:
~/.config/Logic
or
~/.local/share/Logic
We released a temporary fix for processor incompatibilies mentioned in the support article below. The fixes have been implemented in v1.2.40, however, you may still need to use the temporary release versions mentioned below (v1.2.35 for Windows and v1.2.33 for MacOS) if you require using the Decoded Protocols Panel, which is not included in v1.2.40 due to technical issues.
Before the release of 1.2.40, this was the last version of Logic 1.x that we recommened for use.
Windows Standalone releases:
Note: These releases include the newly required Microsoft Visual Studio 2015 runtime. The runtime needs to be installed before the software will be able to run.
When launching 1.2.29, you may see an "Unsupported Version" notice like shown below.
If you see this notice, please start the software using the instructions in the support article below.
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Widows Standalone Releases:
Linux Compatibility release, for users with older libraries:
Widows Standalone Releases:
Linux Compatibility release, for users with older libraries:
Widows Standalone Releases:
Linux Compatibility release, for users with older libraries:
Widows Standalone Releases:
Linux Compatibility release, for users with older libraries:
Widows Standalone Releases:
Linux Compatibility release, for users with older libraries:
Widows Standalone Releases:
Linux Compatibility release, for users with older libraries:
Standalone Windows (no installer):
OSX 10.7+
Linux 32 bit:
Linux 64 bit:
Windows: (32 bit and 64 bit)
OSX:
Linux 32 bit:
Linux 64 bit:
Linux 32 bit compatibility release:
Linux 64 bit compatibility release:
Windows 32 bit standalone:
Windows 64 bit standalone:
Linux 32 bit:
(released after 1.1.18 with Linux specific USB fixes)
Linux 32 bit
Linux 64 bit
Windows:
OS X:
Linux 32 bit:
Linux 64 bit:
Windows Standalone:
32 bit:
64 bit:
Starting with beta release 1.1.18, we stopped supporting OSX versions earlier than 10.6. More recently. we only support 10.7 and newer. That is because with newer versions of OSX, it has become impossible to compile our required libraries with support for these older platforms.
1.1.15 was the last release to support OSX 10.4 and 10.5. You can download them here:
These releases only support the original Logic and Logic16 and none of the Gen2 products (Logic 4, Logic 8, Logic Pro 8 and Logic Pro 16).
Windows standalone release:
Note, 1.1.15 was the last 32 bit only release. There is only 1 version for both 32 bit and 64 bit versions of windows. The reason there are two installers for 1.1.15 is to simply support installing the different drivers for 32 bit and 64 bit windows, both of which are included in this one standalone release.
Original versions of the software were written in .NET and were Windows only. Back then, we used Windows serialization to save .logicdata files. In later versions of Logic 1.x software, we have moved to cross-platform software using Boost for serialization. These two serializations are not compatible and require different versions of the software to open. Unfortunately, there is no way to convert from one version to the other, making the older versions impossible to open in new versions of the software.
To open any files saved with version v1.0.34 or older, you can still open the files with an older version of the software. Below are links to an older version of the software that should open them just fine.
Please note that this software was last released in late 2010 and should not be confused with the new software versions that started with 1.1.0. All software releases in the range 1.0.x were Windows only, and all releases 1.1.x were cross-platform.
v1.0.34:
Starting October of 2022, Saleae has released a new hardware revision of our Logic analyzers which requires the latest version of the Logic 2 software available . This newer revision of the hardware will no longer work with our legacy Logic 1.x software.
Starting October of 2022, Saleae has released a new hardware revision of our Logic analyzers which requires the latest version of the Logic 2 software available . This newer revision of the hardware will no longer work with our legacy Logic 1.x software.
Windows 64-bit standalone release:
The needs to be installed before the software will run.
Mac OS X 10.8+
Linux 64-Bit
Unfortunately, the Decoded Protocols Panel, in addition to Protocol Search, is no longer available in 1.2.40 due to technical issues. When attempting to enable it in 1.2.40, you will find our note about it in the screenshot below. Please upgrade to our newer if you need this functionality.
Windows:
MacOS:
Windows
Mac OS X 10.8+
Linux 64-Bit
Windows 32-Bit Standalone
Windows 64-Bit Standalone
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 64 bit:
Linux Compatibility release, for users with older libraries: Linux 64 bit - not yet tested after update to QT 5.7.
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 32 bit: Linux 64 bit:
Linux 32 bit: Linux 64 bit:
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 32 bit: Linux 64 bit:
Linux 32 bit: Linux 64 bit:
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 32 bit: Linux 64 bit:
Linux 32 bit: Linux 64 bit:
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 32 bit: Linux 64 bit:
Linux 32 bit: Linux 64 bit:
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 32 bit: Linux 64 bit:
Linux 32 bit: Linux 64 bit:
Windows 32 bit (no installer): Windows 64 bit (no installer):
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 32 bit: Linux 64 bit:
Linux 32 bit: Linux 64 bit:
Windows (32 bit and 64 bit):
OSX 10.7+:
Linux 32 bit: Linux 64 bit:
Linux Compatibility release" Linux 32 bit: Linux 64 bit:
Windows 32 bit: Windows 64 bit:
Windows (32 bit and 64 bit)
osx 10.7+
Linux 32 bit:
Linux 64 bit:
Linux 32 bit compatibility release:
Linux 64 bit compatibility release:
Windows 32: Windows 64:
Linux 32: Linux 64:
OSX 10.6+
Linux 64 bit:
Windows 32 bit:
Windows 64 bit:
OSX 10.6+
OSX 10.4+ OSX 10.5+
32 bit: 64 bit:
Have you referred a friend or colleague to purchase our logic analyzers? If so, contact us and tell us all about it! We would be happy to send a small gift your way.
In your message to us, feel free to include your shipping information below:
Full name
Address
Phone number
Please note that there may be restrictions for shipping to certain countries, but we'll let you know about it in our reply.
In case you don't plan on using Marketplace Extensions with our software and would like to disable access to third party extensions entirely, you may follow the instructions below. This may be common in cases where your IT department does not approve usage of external extensions with our software.
Our software provides a mechanism to turn off the marketplace. Specifically, you can prevent the software from fetching the list of available extensions by setting the environment variable below.
SALEAE_OFFLINE_MARKETPLACE
For example, from the command line, you can execute the following:
cd "\Program Files\Logic" set SALEAE_OFFLINE_MARKETPLACE=1 Logic.exe
For PowerShell, it would be as follows:
$Env:SALEAE_OFFLINE_MARKETPLACE=1
When set, the software will show an error on launch saying it was unable to load the marketplace, and the marketplace sidebar will only show locally installed extensions (in other words, extensions we shipped with the software, or extensions the user manually installed locally).
Please note that this capability was not intended to be used for security purposes. We added this to make it easy for us to test the offline behavior of the marketplace without needing to go offline.
Extensions are composed of at least three files, extension.json
, readme.md
, and one or more python files. The Logic 2 software uses Python version 3.8.
A single extension can contain multiple high level analyzers, measurements, or both.
This example is a for a single extension that contains one high level analyzer and one digital measurement.
The author
, description
, and name
properties manage what appears in the Extensions panel where the extensions are managed.
Property
Example
Description
version
"0.0.1"
The version if this extension. Increase this when publishing updates in order to allow users to update.
apiVersion
"1.0.0"
The Saleae API version used. This should remain "1.0.0" until we make changes to the extension API.
author
"Mark Garrison"
Your name
description
"Utilities to measure I2C..."
A one line description for display in the marketplace
name
"I2C Utilities"
The name of the extension package, for display. Note - this does not have to match the names of the individual extensions, which are shown elsewhere.
extensions
see below
An object with one key per high level analyzer or measurement.
The extensions
section describes each high level analyzer or measurement that is contained in this extension package.
In the example above, there are 2 extensions listed.
There are three different types of extension here, as indicated by the type property. "HighLevelAnalyzer", "DigitalMeasurement", and "AnalogMeasurement". There are some differences between these types.
HighLevelAnalyzer
Property
Example
Description
type
"HighLevelAnalyzer"
This must be the string "HighLevelAnalyzer"
entryPoint
"I2cUtilities.Eeprom"
The python entry point. The first part is the python filename without the extension, and the second part is the name of the class in that file
AnalogMeasurement
and DigitalMeasurement
Property
Example
Description
type
"DigitalMeasurement"
This must be either "DigitalMeasurement" or "AnalogMeasurement"
entryPoint
"I2cUtilities.I2cClock"
The python entry point. The first part is the python filename without the extension, and the second part is the name of the class in that file
metrics
"i2cClockSpeed": { "name": "I2C Clock Speed", "notation": "N MHz" }
Object that contains one property for each single numeric metric you wish to display. If your measurement class produces 4 different numbers, all 4 must be present here. Each metric property name must match the name of the metric produced by your python class.
metrics[X].name
"I2C Clock Speed"
The display name for a given metric
metrics[X].notation
"N MHz"
The display string for formatting the metric. Limited HTML tags are supported: ['b', 'i', 'em', 'strong', 'sub']
Example: "N <sub>t</sub>"
Please review the supported IO voltage thresholds of the product you are using as well as its over-voltage protection. The details for each product can be found below.
All four of the new Saleae devices include over-voltage protection to +/- 25 volts. It’s perfectly safe to connect any signal up to this range directly to its inputs.
The original Logic and Logic16 cannot be directly connected to these signals. They also have over-voltage protection, but it was not designed to be used with these signals continuously. Either use a voltage divider or a dedicated line transceiver/receiver to convert these signals to CMOS/TTL levels.
When recording any of these signals, it is important to properly connect the ground from the logic analyzer to either the ground of the transmitter or the receiver. Do not connect ground to one of the signal wires, as this could damage your equipment. Neither RS-232, RS-485, nor RS-422 are isolated, which means that all transmitters and receivers on the bus must share the same ground to operate. In most cases, a ground wire is included in the bus wiring, which could be tapped with Logic. Otherwise, you will need to find another ground connection nearby to connect to.
For RS-422 and RS-485, it's generally not necessary to record both the + and - signals. In most cases, recording only one-half of the differential pair is sufficient. However, it's usually a good idea to record both sides, at least at first, to evaluate the differences in the recording quality of the two signals. Because the threshold voltage of the logic analyzer is not matched properly for differential signals, it's likely that one side of the differential pair will have a cleaner recording than the other.
Connecting to higher voltage signals with the new Logic 4, Logic 8, Logic Pro 8, or the Logic Pro 16.
All four of the new Saleae devices include over-voltage protection to +/- 25 volts. It’s perfectly safe to connect any signal up to this range directly to its inputs.
This may work for most applications. However, keep in mind that the logic threshold (the trip-point voltage that determines if the input is a logic 0 or a logic 1) is very low compared to a 12-volt signal. If your signal does not swing all the way to ground or has a very slow transition speed, it may skew the results or simply not read correctly. In these cases, you may want to use a resistor divider to reduce the voltage level, so the trip point will appear to be higher relative to your signal. Keep the bandwidth requirements and Logic’s input capacity in mind when creating a resistor divider.
Connecting to higher voltage signals with the original Logic or Logic16.
Logic's and Logic16's inputs operate up to 5 volts and have over-voltage protection to protect against short transients up to higher voltages. However, neither product can be directly connected to signals outside the 0V to 5V range.
To connect Logic to a higher voltage signal, you have several options. In the general case, the best solution is to use a level shifting IC or adapter to convert to a lower voltage.
You may also be able to use a resistor divider. However, this will either reduce the input bandwidth of Logic or consume extra power from your circuit, depending on the resistor values.
Generally, we recommend converting CAN to a single-ended TTL signal before connecting it to Logic. However, in most cases, you can connect the CAN low signal directly to the Logic analyzer. CAN low is electrically similar to single-ended CAN and can be interpreted by our CAN analyzer.
Note: If you are using the original Logic16, make sure you have selected the lower voltage setting for 1.8V to 3.3V logic.
Note: If you are using 3.3 Volt CAN, you might not be able to record it directly with Logic 4.
Our products are most likely to work with recording CAN low. It is very unlikely that they will be able to record CAN high. Logic 4 requires CAN low to swing below 0.8 volts and above 2.0 volts. Logic 8 requires CAN low to swing below 0.6 volts and above 1.2 volts. Logic Pro 8 and Logic Pro 16 have comparator inputs instead of CMOS inputs, with selectable thresholds. For use with CAN low at 5 volts, the highest threshold setting is suggested. In the software, it is labeled as 3.3v+, and the threshold voltage itself is about 1.65 volts.
We recommend verifying that CAN low does swing below the required voltage before making a purchase. Otherwise, a voltage divider or a CAN adapter may be required.
The Saleae devices and CAN analyzer were designed with single-ended CAN in mind, for development of CAN devices that contain a CAN transceiver IC. The recommended way to record CAN data is to probe the single-ended signal between the CAN transceiver IC and the application processor.
ECL logic swings between -1.75 volts (logic low) and -0.9 volts (logic high). Because none of the Saleae products offer threshold options below ground, ECL cannot be directly recorded with digital inputs. The Logic Pro devices can record these signals in analog, but only at very low bandwidths, and the recorded signal can only be viewed in analog—protocol analyzers and digital measurements can't be applied.
PECL swings from +3.4 volts (logic low) to +4.2 volts (logic high).
The highest threshold option for a Saleae product is only 1.65 volts on the Logic Pro devices, which is not high enough to properly record the PECL signals using the digital inputs. You may want to consider level shifting the signal down or recording it with the analog inputs at a much lower bandwidth.
As mentioned before, none of the Saleae products have differential inputs. They are single-ended only. Ideally, LVDS signals should be recorded downstream of an LVDS line receiver or transceiver.
Recording directly with single-ended inputs: In situations with programmable drive strength or termination resistors, you may need to first check the signal voltages using the analog recording mode of the new Saleae products. Then check the recorded signals against the voltage threshold(s) for the product you are using.
It is not possible to directly record Ethernet signals with Saleae devices. However, it may be possible to record 10BASE-T data with some input circuitry.
10BASE-T Ethernet is a differential signal using Manchester encoding. Ethernet cable has an impedance of 100 ohms, and the signals swing between +1V and -1V, producing a peak-to-peak voltage of +/- 2 volts. Saleae devices do not directly support recording differential signals, so a differential to a single-ended receiver is recommended. Once the signal has been converted to single-ended, it can be recorded, and physical layer decoding can be performed using the Manchester protocol analyzer built into the Saleae software. Since Ethernet devices will not communicate unless a device is connected to receive data, you will most likely need to tap the signals on an existing Ethernet transceiver.
10 Mbit data with Manchester encoding has a bandwidth of 20 MHz. To record this with a Saleae device, a minimum sample rate of 80 MHz is required. For this, Logic 8, Logic Pro 8, Logic Pro 16, and the original Logic 16 would be suitable. Be sure to verify the IO standards of the device you will use before implementing the necessary single-ended conversion.
100BASE-T Ethernet and faster cannot be recorded because the signal is tri-state. (+1V, -1V, and 0V). No Saleae device is capable of recording digital signals with 3 states, and the analog inputs do not have the required bandwidth to record 100BASE-T signals. Also, protocol decoders cannot be used on analog signals.
The Saleae Logic software includes the ability to decode SMBus data. The SMBus Analyzer allows you to decode the SMBDAT and SMBCLK lines with some configuration settings which can change how the data can be viewed.
The SMBus Analyzer has the following settings.
First, select the channels for the SMBDAT and SMBCLK lines.
Then, select the SMBus decode level. This will change the way the decoded captured data is displayed on the Logic software.
Signals: This will show the data in single-bit format.
Changing the Display Radix setting in the Logic software will not change the way the SMBus data is displayed. Instead, you must change the display format using the SMBus decode level setting.
Bytes: This will show the data in hex format, decode it as a read or write operation, and will display the bytes as an ACK or NACK. If PEC on packets need to be calculated and shown on screen, then SMBus, PMBus, or Smart Battery should be selected.
SMBus, PMBus, & Smart Battery: Set this to the appropriate protocol you will be decoding. When enabling the "Calculate PEC on packets" setting, the PEC will be shown when the data is decoded.
Here is a quick summary of the symbol definitions in the waveform in order of them appearing in a single SMBus transaction. Note that a transaction can be made up of multiple 8-bit words.
Green circle = Start condition for the entire transaction
Circle matching color of waveform = Stop bit for an 8-bit word (except the last one)
Red circle = Stop bit for the last 8-bit word
Orange square = Stop condition for the entire transaction
I also wanted to add that it’s normal for the SDA line to go high briefly when the component driving the SDA line low switches between the master and the slave device. For example, when the master device finishes transmitting data, it will then release the SDA line, allowing the slave to pull it low to signal the ACK. There is sometimes a brief time during the switch where neither component is pulling the line low, which can produce short positive pulse. This is usually before or after a ACK/NAK bit.
The Saleae software includes a protocol analyzer for the Serial Peripheral Interface (SPI) bus.
SPI uses a Clock signal, two data signals (MISO and MOSI), and an Enable signal. That is the most common configuration of SPI, but other variants exist.
Our SPI analyzer is generic enough to decode basic synchronous serial (at minimum, a clock signal and a data signal) without the need for a second data signal or an enable signal. In cases like this, one of the data signals and the Enable signal can be disabled from within the analyzer settings.
Add the SPI analyzer to your capture. There are a number of settings for the analyzer. First, select the channels you are using. If you are not using an enable signal or if you only have one data signal, simply set the unused channels to "None". Only clock and one data channel (either MISO or MOSI) are required for the SPI analyzer to operate.
Next, select the remaining settings you are using. If you are unsure what settings are used for the data you captured, you can either visually identify them or you can guess and check.
MSB/LSB first. If you can't check which mode your data uses, you may need to guess.
Bits per transfer. This is almost always 8 bits but can be set up to 64 bits.
Clock polarity
Clock polarity is basically the idle state of the clock in between SPI transactions. Whatever the idle clock state is when the enable signal becomes active, use this value (high or low).
Clock phase
Clock phase selects which edge the data is read on. Please note that leading and trailing do not correspond to rising and falling, which can lead to confusion. The leading edge is defined as the first edge on the clock signal after the enable line becomes active. If the clock is idle high, then the leading edge is the falling edge. If the clock is idle low, then the leading edge is the rising edge. This is the edge where data will be read from the data lines.
Active low/active high enable
Only applies when an enable signal is used. Defines the state of the enable signal when the SPI analyzer will read the data signals.
When you have multiple devices on the same SPI bus, you will have multiple enable signals, one for each slave device. To decode data from each slave device, simply add more SPI analyzers. It's perfectly fine for all SPI analyzers to share the same clock, the MISO, and MOSI signals. Note that the GUI will indicate that those channels are already in use, but that does not mean you can't use them.
Different Settings for MISO and MOSI
In some cases, you may want to have different settings between the two data channels. That can easily be done by using two SPI analyzers. Analyzers in the Saleae software have no limit to the number of analyzers that can share the same channels, so just add two SPI analyzers using the same clock, and enable channels. Then, on each analyzer, disable one of the two data channels.
SPI analyzer 1
MOSI channel - MOSI input selected
MISO channel - "none"
SPI analyzer 2
MOSI channel - "none"
MISO channel - MISO input selected
Then assign the settings you like to each analyzer.
In many cases, there is no chip select signal available for an SPI bus that needs to be recorded.
The SPI analyzer included in the Saleae Logic software supports this case. In the event you record SPI data and there is no valid enable signal, simply change the "Enable" channel in the SPI analyzer settings to "None" as shown here:
In some cases (most commonly caused by ignoring the enable signal as described above), the analyzer will not decode the data correctly. That is because the SPI analyzer usually relies on the enable signal to align the data—that is, determine which bit of data should be the first bit in each byte and which bit should be the last.
Shown here is a typical issue where the alignment is off. You can clearly see that the pulses on the clock channel are in groups of eight—8 bits in each byte. There is a short gap between each byte.
However, even though the analyzer is decoding the data in groups of 8 bits, it is not starting on the correct bit. Instead, it is taking some bits from the end of the previous byte and adding them to the bits at the beginning of the next byte.
Here are the two most common causes of this:
The logic analyzer started recording in the middle of an SPI byte.
There are other erroneous transitions on the clock channel before the valid SPI data.
This is easy to fix. You will need to tell the SPI analyzer where the valid SPI data starts in the capture. The analyzer will then use that as the new starting point of the capture and decode data from that location.
Here's how this is done:
Place a timing marker just before the start of the first valid SPI byte.
Delete the data before the timing marker (please note this cannot be undone). Instructions are provided in the support article below.
If using the older Logic 1.x software, the following information applies.
First, add the timing marker by clicking the A1 button on the right side of the screen. Then click on the graph at the location where you would like to place it, as shown here:
Next, open the SPI analyzer settings menu and select "Re-run starting at timing marker...". From that list, select the timing marker you just placed.
Screenshots:
After a moment, the SPI analyzer will automatically reprocess the capture. The data should now be aligned correctly, as shown here:
A red square appears on the clock channel when the enable channel goes low. This can be accompanied by one of these messages: "The initial (idle) state of the CLK line does not match the settings" or "Settings mismatch" or "Error".
This occurs when the clock polarity setting is not set properly. For instance, in the image below, the clock channel is low while the enable signal is inactive. The correct setting should be "Click is low when inactive (CPOL=0)". In this case, the error is generated when "Clock is high when inactive (CPOL=1)" is selected. Simply swap the clock polarity and then double-check the clock phase to correct the issue.
The Saleae Logic software includes a software protocol analyzer for the I2S digital audio protocol.
The specification for the I2S audio protocol can be found from Sparkfun's website (document by Philips Semiconductors) below:
The Saleae analyzer is designed to decode two-channel audio in the I2S format. It is possible to decode additional channels by using more than one instance of the I2S analyzer at the same time and by sharing the clock and frame signal between analyzers. Each instance of the analyzers can decode two channels of audio.
The Saleae I2S analyzer does not support any Mono formats.
Even when the I2S settings have signed number selected, unsigned numbers may always be shown.
This issue is solved by changing the display radix from ascii to decimal. Although a decimal number is shown, the single quotes indicate that the ascii display mode is active, but the number is considered a non-displayable character (in this case, outside of the low ascii range completely) so the text string defaults to unsigned decimal. Changing the display radix to decimal will show the signed number.
The analyzer result may also not display the data correctly. An image of the error is provided below.
In the image above, the data bits are transitioning during the clock falling edge, but the I2S/PCM Analyzer is also set to read on the clock falling edge as shown by the "down" arrows on the clock signal.
That means the bits are being decoded at the exact moment the bits are changing, which will cause errors and will be very sensitive to changes in the sample rate. Change the I2S/PCM Analyzer setting for CLOCK State to either Rising edge or Falling edge depending on the correct clock edge that your data requires.
For more information on this, please see the link below.
Extensions are Python modules that enhance the debugging process by providing powerful analysis tools on top of your data. There are currently three types of extensions available:
High-Level Analyzers
Analog Measurements
Digital Measurements
You can browse available extensions and quickly install them from our Extensions Marketplace by clicking the Extensions button located at the right side of the software. You can also publish your own creation! Over time, we'll be able to build up a collection of extensions. We can't wait to see what kinds of extensions will be shared there.
High level analyzers are protocol analyzers that process the output of the existing "low level" analyzers already in the app. You can write your own in Python. This lets you create powerful new analyzers without needing to reinvent the wheel. So far, our favorite application of high level analyzers is converting existing decoded I2C bytes into clean, decoded messages specific to the I2C device we're working with, to easily read recorded I2C traffic without needing to go back to the datasheet.
Digital and analog measurement extensions let you write python code that processes a selected range of analog or digital data, and produces metrics. For example, if you would like to calculate the jitter in a digital clock recording, You can simply write a python script which iterates over the transitions in the selected range, and computes the deviation from nominal. Once written, just shift+click a region of a digital channel, and your measurement result will appear in the list with the other measurements!
In this guide, we will walk your through creating an HLA (High Level Analyzer) extension, however, the process is identical for other types.
Click the 'Extensions' panel button on the right of the software
2. Click 'Create Extension' 3. Under 'Generate from template', choose the type of extension you would like to create. For this example, we will create a High Level Analyzer. 4. (Optional) Click 'Additional Information' to fill in information about your extension.
5. Click 'Save As...' to save and select your location. 6. You should now see your new extension listed as 'Local' in the software.
1. To test the new Sample HLA, capture any protocol data for one of the supported analyzers, and add the appropriate protocol analyzer. We've provided an I2C capture below in case you don't have a protocol data recording available.
2. Click the Analyzers '+' button to add our Sample HLA.
3. In the settings popup, select 'I2C' under Input Analyzer. For the rest of the settings, you can leave them as default and click 'Finish'. Once you add the HLA, you can see it as a virtual channel as shown in the image below.
To edit the Sample HLA (perhaps as a starting point to creating your own HLA), you can click the 'Local' button next to 'Sample HLA' under the Extensions panel. This will open the containing folder for your extension files which you can update for your needs.
Check out our High Level Analyzer article to learn more about customizing your HLA.
The software currently has a few built-in measurements already installed and ready to use. The gif below demonstrates how to use them. You can also hold the shift key while dragging across your recorded data to add a measurement without using the sidebar. The use of measurement extensions allows additional custom measurements to be made.
To see your new measurement in action, take a capture of digital data and add a measurement to it as shown above. You should see the new measurements:
To edit the Sample Measurement, you can click the 'Local' button next to 'Sample Measurement' under the Extensions panel. This will open the containing folder for your extension files which you can update for your needs.
Check out our Measurement article to learn more about customizing your Measurement.
The Saleae Logic software includes a protocol analyzer for the DMX-512 interface. DMX-512 is a single data channel interface commonly used to control lighting in staged environments such as those found in concerts, theater, and other live performance events. At a minimum, the DMX-512 interface will have a Data- pin (D-), a Data+ pin (D+), and a ground pin.
Setting Up the DMX-512 Analyzer
To use the DMX-512 analyzer, first add it using the add analyzer menu on the right side.
In the analyzer settings, specify which input channel will be used for the serial data. You will also need to specify if the DMX-1986 4 μs MAB will be used.
Checking the "Accept DMX-1986 4us MAB" box will allow compatibility with legacy equipment that uses the DMX-512 original specification from 1986, which had a fixed 4 μs MAB. Most modern DMX-512 equipment will not need this setting checked, so we leave it unselected by default.
Common Causes for Decoding Errors
The signal is inverted. Currently, our DMX-512 analyzer cannot detect inverted signals. For example, if the signal looks inverted while D+ was being measured, try measuring D- instead. Please ensure that measurements are always done with respect to ground.
If you're still facing decoding errors, you can compare your signal with a simulated signal generated by our Logic software. You can read more about simulating data below.
There are 2 methods to installing an extension. You can install an extension from within the software via our in-app Extensions Marketplace, or you can install it via local source files on your PC.
This will be the easiest method of installing an extension. Clicking on the Extensions button on the right will open up a list of published extensions from us and from the community. Afterwards, you can click "Install" for the extension of your choice.
In some cases, the extensions list may not appear properly within the Extensions panel of the software. This may be due to security settings such as a firewall, or simply having the PC offline. To get around this, extensions can be found on GitHub and can be downloaded manually using the following steps.
On a computer where the marketplace loads, click the extension of interest so that it is highlighted. This will open up the extension information within the software.
Click the "Repository" link. This opens the github.com repository for that extension.
Click the green "Code" button, and select download as zip.
Extract the zip file anywhere.
In the Logic 2 software, on the Extensions panel, click the "three-dots" menu icon, select "Load Existing Extension..." and select the downloaded extension.json file.
To uninstall an extension, click on the 3 dots next to an extension in the Extensions panel. Then click Uninstall.
Have no fear! Our discontinued products will continue to work with the latest version of the software and are still supported! We have simply stopped selling them.
1st Generation:
SALEAE001 Logic (Discontinued)
SALEAE009 Logic16 (Discontinued)
2nd Generation:
SAL-00109 Logic 4 Black (Discontinued)
SAL-00110 Logic 4 Red (Discontinued)
Our Extensions Marketplace allows you to publish extensions that you create, or to install extensions published by other members of the community. Extensions are community-written Python modules. Extensions are not installed automatically, except for a few Saleae-created extensions.
Before installing an extension, please keep in mind the following:
Non-Saleae extensions were created and published by members of the community.
Saleae cannot endorse their contents.
Please treat extensions the same way you would other programs downloaded from the internet.
All extensions are open source and can viewed by clicking the “Repository” link in the extension details.
If you have any problems with an extension, please be sure to create an issue on the extension’s GitHub repository. If you suspect an extension does not comply with the Saleae Marketplace Partner Agreement, please contact Saleae support or click on the "Report" button from within the extension details.
Learn how to modify your new Measurement
This guide assumes that you have familiarity with the Python programming language. It is what will be used to customize our Measurement.
This guide assumes you have generated a new Digital Measurement. In this guide you will learn about:
The files included in the Digital Measurement template extension and what they are.
The different parts of DigitalMeasurement.py
.
How to update the template to make your own measurements.
In your new Measurement extension folder you will find 3 files:
README.md
Documentation for your extension, shown within Logic 2 when you select an extension, and what users will see if you put your extension on the Marketplace.
extension.json
Every extension must have this file in its root directory.
Contains metadata about the extension, and the HLAs and Measurement scripts that are included with the extension.
See Extension File Format for more information.
DigitalMeasurement.py
or AnalogMeasurement.py
Python source code for your measurement.
Digital measurements are implemented with a class template that looks like below. Take a look at pulseCount.py
to see how this was modified for our Pulse Count extension.
Analog measurements are implemented with a class template that looks like below. Take a look at voltage_peak_to_peak.py
to see how this was modified for an example analog extension.
In python, your class will be constructed when the user adds or edits a measurement. This instance of your class will be used for a single computation. Your class can either process analog data or digital data, but not both. A class may handle as many metrics as you want though. If you want to implement both digital and analog measurements, you will need at a minimum two classes.
The constructor will be called with an array of requested measurements, which are taken from the extension.json
file. In our pulseCount.py
example, this is declared like so:
Immediately after construction, the function def process_data(self, data):
will be called one or more times. This function takes a parameter data
which differs between analog and digital measurements.
The Saleae Logic software stores collected data in chunks. To keep python processing performant, the Logic software passes these blocks, or sections of these blocks, one at a time to your measurement. If the requested measurement range does not line up with the internal block storage, the objects passed to python will already be adjusted to the measurement range, so no work needs to be done to handle this condition.
This makes it impossible to know exactly how much data will be needed for the given measurement range the first time process_data
is called. Be sure to update the internal state of your class in such a way that this isn't a problem. For example, when computing the average analog value over a range, it would be best to hold the sum of all values passed to process_data
and the total count of samples in data members, and only compute the average in the measure
function.
For analog measurements, data
is an instance of AnalogData
, which is an iterable
class with the properties sample_count
and samples
. sample_count
is a number, and is the number of analog samples in the data instance. Note - this might not be the total number of analog samples passed to your measurement, since process_data
may be called more than once if the user selected range spans multiple chunks.
samples
is a numpy ndarray. For information handling this type, please refer to the numpy documentation.
The process_data
function should not return a value. Instead, it should update the internal state of your class, such that the measure
function can produce your measurement's results.
For digital measurement classes, the data
parameter is an instance of the iterable
Saleae class DigitalData
. Each iteration returns a pair of values - the current time, as a GraphTime
class instance, and the current bit state as a bool
. (True
= signal high).
The object is essentially a list with the timestamp of each transition inside of the user selected region of digital data.
The GraphTime
has one feature. One GraphTime
can be subtracted from another to compute the difference in seconds, as a GraphTimeDelta
. GraphTimeDelta
can be converted to a float using float(graph_time_delta)
. This allows your code to compute the time in between transitions, or the time duration between the beginning of the measurement and any transition inside of the measurement range, but it does not expose absolute timestamps.
For example, to compute the total number of transitions over the user selected range, this could be used:
Currently, the DigitalData
collection will first include the starting time and bit state, and then every transition that exists in the user selected range, if any. It also exposes the starting and ending time of the user-selected measurement range. Consult the API Documentation for details.
The def measure(self):
function will be called on your class once all data has been passed to process_data
. This will only be called once and should return a dictionary with one key for every requested_measurements
entry that was passed into your class's constructor.
in the future, we may allow the user to select which metrics to compute. To avoid unnecessary processing, it's recommended to check the requested_measurements
provided by the constructor before computing or returning those values. However, returning measurements that were not requested is allowed. The results will just be ignored.
Browse the Saleae Marketplace in Logic 2 for more ideas and examples of extensions you can create.
Publish your extension to the Saleae Marketplace!
We don't offer discounts for drop-shipping. Generally, we prefer distributors who will handle all items related to shipping, handling, and stocking.
You can view more about our discount options below:
Learn how to modify your new High Level Analyzer
The files included in the HLA template extension and what they are.
The different parts of HighLevelAnalyzer.py
.
How to process input analyzer frames and output new analyzer frames.
In your new High Level Analyzer (HLA) extension folder you will find 3 files:
README.md
Documentation for your extension, shown within Logic 2 when you select an extension, and what users will see if you put your extension on the Marketplace.
extension.json
Every extension must have this file in its root directory.
Contains metadata about the extension, and the HLAs and Measurement scripts that are included with the extension.
HighLevelAnalyzer.py
Python source code for your HLA.
For the purposes of this document, we will be focusing on HighLevelAnalyzer.py
Let's break down the contents of HighLevelAnalyzer.py
.
This declares our new HLA class, which extends from HighLevelAnalyzer, and 3 settings options that will be shown within the Logic 2 UI. Note: if the name of the class MyHla() is used it must be referenced in the accompanying json file. Note that Hla() is the default value.
This specifies how we want output AnalyzerFrames to be displayed within the Logic 2 UI. We will come back to this later.
This is called when your HLA is first created, before processing begins. The values for the settings options declared at the top of this class will be available as instance variables here. In this case, the settings values will be printed out and visible within the Logic 2 terminal view.
This is where the bulk of the work will be done. This function is called every time the input to this HLA produces a new frame. It is also where we can return and output new frames, to be displayed within the Logic 2 UI. In this case we are outputting a new frame of type 'mytype'
, which spans the same period of time as the input frame, and has 1 data value 'input_type'
that contains the value of the type
of the input frame.
Although we don't have the ability to attach debuggers to Python extensions at the moment, here are some suggestions to help debug your HLA.
Use print()
statements to print debug messages to our in-app terminal. More information on our in-app terminal can be found below.
Use the Wall Clock Format and Timing Markers to locate the exact frame listed in your error message.
Use the reload source button in the app to quickly re-run your HLA after editing your source code.
Now that we've gone over the different parts of an HLA, we will be updating our example HLA to search for a value from an Async Serial analyzer.
In the Extensions Quickstart you should have downloaded and opened a capture of i2c data. For this quickstart we will be using a capture of Async Serial data that repeats the message "Hello Saleae".
To start, let's remove most of the code from the example HLA, and replace the settings with a single search_for
setting, which we will be using later.
If you open the example data from above and add this analyzer, selecting the Async Serial analyzer as input, you should see the following when zooming in:
Our HLA (top) is outputting a frame for every frame from the input analyzer (bottom), and displaying their types.
The Async Serial output is simple - it only outputs one frame type, data
, with 3 fields: data
, error
, and address
. The serial data we are looking at will not be configured to produce frames with the address
field, so we can ignore that.
To recap, the decode(frame)
function in our HLA will be called once for each frame from the Async Serial analyzer, where:
frame.type
will always be data
frame.data['data']
will be a `bytes` object with the data for that frame
frame.data['error']
will be set if there was an error
Now that we we understand the input data, let's update our HLA to search for the character "H"
.
After applying the changes, you can open the menu for your HLA and select Reload Source Files
to reload your HLA:
You should now only see HLA frames where the Async Serial frame is an H
or l
:
Now that we can search for characters, it would be much more flexible to allow the user to choose the characters to search for - this is where our search_for
setting that we added earlier comes in.
Instead of using the hardcoded 'Hl'
, let's replace that with the value of search_for
:
Now if you can specify the characters to search for in your HLA settings:
To update the display string shown in the analyzer bubbles, the format
string in result_types
variable will need to be updated. 'mytype'
will also be updated to 'match'
to better represent that the frame represents a matched character.
And in decode()
: we need to update the data in AnalyzerFrame
to include 'char'
, and update the frame 'type'
to 'match'
.
After reloading your HLA you should see the new display strings:
AnalyzerFrame
s include a start_time
and end_time
. These get passed as the second and third parameter of AnalyzerFrame
, and can be used to control the time span of a frame. Let's use it to fill in the gaps between the matching frames.
Let's add a __init__()
to initialize the 2 time variables we will use to track the span of time that doesn't have a match:
And update decode()
to track these variables:
And lastly, add an entry in result_types
for our new AnalyzerFrame
type 'nomatch'
:
The final output after reloading:
Browse the Saleae Marketplace in Logic 2 for more ideas and examples of extensions you can create.
I2C communication involves two roles: a master and a slave. The master initiates and controls the communication, while the slave responds to the master's requests. Data transmission on the I2C bus is organized into transactions, each starting with a START condition and ending with a STOP condition. Each transaction begins with a 7-bit address and comprises one or more data bytes, with each byte followed by an acknowledgment from the receiver.
I2C communication is captured as frames by a built-in low-level I2C analyzer. Each frame represents one byte of information. Frame types are defined below including: start, address, data, and stop.
The HLA executes once for each incoming frame. Each frame contains only one byte. Each transaction begins with a start frame, an address frame, and then any number of data frames, ending with a stop frame. A state machine is often needed to decode multi-byte (multi-frame) sequences such as a command followed by a parameter.
"address"
I2C address byte
Store the address as an integer and display it on the terminal as a hex value
Result
"data"
I2C data byte
Store the data value as an integer and display it on the terminal as a hex value
Result:
"start"
undefined
I2C start condition
"stop"
undefined
I2C stop condition
"enable"
undefined
Indicates the enable (chip select) signal has transitioned from inactive to active, present when the enable channel is used
"disable"
undefined
Indicates the enable signal has transitioned back to inactive, present when the enable channel is used
"result"
A single word transaction, containing both MISO and MOSI
"error"
undefined
Indicates that the clock was in the wrong state when the enable signal transitioned to active
Click the Analyzers panel button and then the + button to add a protocol analyzer. Once added, the protocol can be displayed in binary, decimal, hexadecimal, or ASCII, and information is shown above each segment of data (e.g. byte) in the viewport as well as in the Data Table.
This guide assumes that you have familiarity with the programming language. It is what will be used to customize our HLA.
This guide assumes a new High-Level Analyzer. In this guide you will learn about:
See for more information.
All HLAs must subclass , and additionally output . The Setting
classes are included so we can specify settings options within the Logic 2 UI.
The goal is to search for a message within the input analyzer, but first we need to understand what frames the input analyzer (Async Serial in this case) produces so we can know what frames will be passed into the decode(frame:
)
function.
The frame formats are documented under , where we can find .
Find out about other analyzers and the AnalyzerFrames they output in the documentation.
Use the as a reference.
to the Saleae Marketplace!
The Logic 2 software has the ability to decode a variety of protocols, including SPI, I2C, serial, 1-Wire, CAN, I2S/PCM, and many more! To create your own protocol analyzer, refer to our .
To learn more, see the section of the User Guide.
Property
Type
Description
identifier
int
Identifier, either 11 bit or 29 bit
extended
bool
(optional) Indicates that this identifier is a 29 bit extended identifier. This key is not present on regular 11 bit identifiers
remote_frame
bool
(optional) Present and true for remote frames
Property
Type
Description
num_data_bytes
int
Number of data bytes in the transaction
Property
Type
Description
data
int
The byte
Property
Type
Description
crc
int
16 bit CRC value
Property
Type
Description
ack
bool
True when an ACK was present
Property
Type
Description
address
byte
The 7 bit I2C address
read
bool
True for read operations, false for write operations
ack
bool
True when the address was ACKed, false when NAKed
error
str
(optional) Present if an there was a problem reading the I2C data
data
byte
single 8 bit data word
ack
bool
True when the data byte was ACKed, false when NAKed
error
str
(optional) Present if an there was a problem reading the I2C data
Property
Type
Description
Property
Type
Description
Property
Type
Description
miso
bytes
Master in slave out, width in bits is determined by settings
mosi
bytes
Master out slave in, width in bits is determined by settings
Property
Type
Description
Property
Type
Description
data
int
The size in bytes is determined by the settings
The time bar, located at the top of the software, helps with visualizing the time at which events occur in your capture. Right-clicking on the time bar will allow further configuration options.
The time point at which t=0s occurs can be configured to the following events
Start of Capture: Sets the start of the capture as t=0s
Digital Trigger: In a digital triggered capture, this sets the point at which the digital trigger occurs as t=0s
Analyzer Trigger: If the trigger was the result of an Analyzer Trigger (located under the Analyzers panel > Trigger View), then the point at which the trigger occurred will be t=0s.
Timing Marker: If any timing markers are present, then the selected timing marker will be set as t=0s. As an alternative, you can also right-click on your timing marker and select "Set as t0" in the pop up menu.
Wall Clock Time: Changes the time format to your OS wall clock
The Wall Clock Time format setting will only show up when you pan the capture all the way to the left (i.e. at the beginning of the capture). When you are zoomed in anywhere else in the capture, the wall clock time will not appear.
The Time Preferences may also be opened for further customization on the time bar behavior.
Measurements in the Logic 2 software can be added via the "Timing Markers, Measurements & Notes" side panel button on the right. Once the panel is opened, add a measurement by clicking the "+" button next to "Measurements." Afterwards, you can click and drag across your desired channel and waveform region to add a measurement box. As a shortcut, you can hold SHIFT while clicking and dragging across your waveform to add a measurement box.
The measurements that are made (called metrics) depend on the type of data you are measuring (analog or digital) and the installed measurement extensions in the software.
The "Clock Stats" and the "Voltage RMS" measurement extensions are installed by default. You can also view and install custom submitted Measurement Extensions via the "Extensions" panel button on the right of the software. More information on this can be found below.
Timing Markers in the Logic 2 software can be added via the "Timing Markers & Measurements" side panel button on the right. Two types of timing markers exist: (1) Single Marker and (2) Marker Pair.
By clicking on the timing markers at the top of the software, text notes can be added and colors can be changed. You can also delete timing markers from here by clicking on the "trashcan" icon.
A Notes section can be found in the "Timing Markers, Measurements & Notes" side panel button on the right as shown in the image below. This allows you to type in notes that are relevant for your captured data. The panel can also be resized both vertically and horizontally by hovering your mouse pointer on the separating edges of the panel.
The new Saleae Logic products (Logic 4, Logic 8, Logic Pro 8, Logic Pro 16) can be used to read and decode RS-232, RS-485, and RS-422 data up to +/- 25V.
Our older Logic products (Original Logic, Logic16) have a 0V to 5V absolute maximum range. Therefore, neither product can be used to measure signals outside of this range. That limits its usage for directly recording RS-232, RS-485, and RS-422, which exceed this range in many cases.
These protocols typically operate at higher voltages, sometimes up to +/- 25V. For this reason, there are several precautions and setup requirements to consider beforehand, which you can read more about below.
RS-232, RS-485, and RS-422 transmit data via asynchronous serial communication. For this reason, you can use our Async Serial Analyzer to decode the data. You can view our setup guide below.
The Saleae Logic software includes a protocol decoder to read clocked (synchronous) parallel bus data. The analyzer supports between 1 and 16 bits of data bus, although realistically, only 15 bits are possible due to the relance of a clock signal taking up one channel. The example image below shows a 4-bit data bus and a clock signal, which requires 5 channels.
When using the Simple Parallel Analyzer, you will notice arrows and dots in the capture. You will also notice that the data is decoded above the Clock channel.
Arrows - These represent when the sampling of the data bus takes place. In the example image above, we have set the Simple Parallel analyzer to treat data as valid on rising edges.
Dots - The dots will be time-aligned with the arrows, and will give a representation of where data sampling takes place in the respective data bit channel.
An example is shown below for how a 4-bit data bus and a clock signal will be decoded using the Simple Parallel Analyzer. Note that the decoded data bubble (in this example, "0x0004") will always appear as a 16-bit hex number (i.e. 0x0000), even when a smaller data bus is decoded (in the case below, a 4-bit data bus).
Keep in mind that this isn't the "state" mode you may have seen in other logic analyzers. All Saleae units operate by over-sampling only and do not support a state/external clock mode. That means you will need to sample at least 4 times faster than the parallel clock frequency.
The settings for the parallel analyzer are described in this section. First, for all unused data bits, change the selected channel to "None". For instance, if you're using a 4-bit data bus, change D4-D15 to "None" in the settings as shown below.
Then, correctly assign the data bits you are using to the corresponding channels.
Finally, set the clock channel and the clock edge correctly and press Save.
The protocol export will create a file using the currently selected display radix (hex demonstrated here). The export format has a header row and then 1 row per recorded parallel value. The values are the same as displayed in the displayed frames over the clock channel. There is one row per valid clock edge, either rising or falling, as specified in the analyzer settings.
Here is a sample of a file:
We certainly need to improve the way this feature works in such a way to avoid this confusion. If you have any issues with the way it's implemented now, feel free to vote for improvements !
Publishing your extension to the Saleae Marketplace will make it readily available to anyone who uses our software. With your help, we're hoping to provide a growing list of feature extensions that our users can benefit from!
Before publishing your extension, you will need to have the following completed.
You have finished developing your extension and are ready to share it. You can follow along with our Extensions Quickstart guide below as a starting point.
Your extension must be uploaded to a GitHub repository.
You must create a release for your extension.
You can take a look at an example GitHub repository for our Sample HLA, which we will use in the following guide.
1. Once you've finished developing your extension, click 'Publish' under the Extensions panel for your extension.
2. Clicking 'Publish' should open your browser and load our extensions submission page. Provide your GitHub repository URL here and click 'Submit'.
If clicking the Publish button doesn't open your browser, you can manually reach our Extensions Marketplace Publish site via the link below:
3. Afterwards, you'll be taken to a new page to authorize Saleae Marketplace to access your GitHub account.
If clicking "Submit" takes you to an error page on GitHub's website, please ensure you are logged in with an account that has administrator permissions over the repository you are attempting to publish. Also, if the repository is part of an organization, there may be some policies for the organization that might be causing the error.
4. Click 'Authorize' and you should immediately receive an email confirming that your extension has been added to the Marketplace. The web page should also confirm that your extension was submitted successfully.
5. Click the three dots at the top of the Extensions panel and click 'Check for Extension Updates.'
6. Congratulations! If the publish was successful, your extension should now appear in the software like below.
Documentation for output produced by Saleae's built-in Analyzers
Python High Level Analyzers allow users to write custom code that processes the output of an analyzer. The below list of pre-installed low level analyzers can be immediately used with high level analyzers (HLAs).
We've released documentation on our FrameV2 API below, which can be used to add HLA support for any low level analyzer that is not listed above, including custom analyzers that were created using our Protocol Analyzer SDK.
In order to write a high level analyzer, the data format produced by the connected source analyzer must be understood.
For example, a high level analyzer which consumes serial data needs to understand the serial analyzer output format in order to extract bytes, and this code is very different from the code required to extract data bytes from CAN data.
To write a Python high level analyzer for a specific input analyzer, navigate to the section for that analyzer.
There is one page for each analyzer that is compatible with python HLAs. Each analyzer produces one or more frame types. These frame types have string names and will be in the type
member of the frame class.
Each frame type may have data properties. The documentation page will list the data properties for that frame type, along with the data type and a description. These can be accessed from the frame.data
dictionary.
Here is an example of you you might handle different frame types from I2C:
In some cases, such in I2C HLA programming, each frame only contains a single byte. Therefore a state machine is needed to keep track of the byes as they are received so that thye can be properly interpreted, specifically if multiple control modes or multi-byte instructions are required. For example the first byte of the data payload is often the slave addres, followed by a control byte. The control byte would determine if follow-on bytes should be interpreted as commands or memory register data. The following example provides some recommendations for state mangement.
Idle: Waiting for I2C transaction to begin
Next State: waiting for Start
Start: I2C start condition signals the beginning of the transaction
Next State: waiting for the expected slave device Address
I2C Slave Address: Typically a 7-bit device address is read, direction bit (read/write) is determined
Next State: waiting for wainting for control byte
Note that the I2C LLA automatically shifts the address back right by 1 bit to recover the original 7-bit address.
I2C Control Byte: When used, it often determines how follow-on bytes should be interpreted (commands or data)
Next State: waiting for data
Data: Data can be supplied as one or more bytes
The I2C LLA (low level analyzer) pass data bytes, one byte at a time to the HLA for decoding.
If a multi-byte instruction is received, tracking of the previous byte(s) may be requied to interpret the current byte correctly.
Next State: Loop to receive next Data byte until Stop is received
Stop: I2C stop condition signals the end of the transaction
Next State: return to Idle
Developing an instruction set lookup table in JSON is best practice that allows you to quickly build an analyzer that interprets received data into human readable annotations. Often at a minum the instruction, name, and numbrer of parameters is needed to build out the state machine.
Property
Type
Description
data
bytes
The serial word, the width in bits is controlled by the serial settings
error
str
(optional) Present if an error was detected when decoding this word
address
bool
(optional) Present if multi-processor or multi-drop bus special modes were selected. True indicates that this is an address byte