General information about Bricks, Bricklets and Master Extensions as well as how to use them can be found in the Primer.
Your program is probably using callbacks, but is not activating them correctly. Brick Viewer until version 2.2.3 also used callbacks and activated them if you selected the tab of a Brick or Bricklet. Because the callback configuration is global this activated the callback for your program too.
To fix this problem you need to activate the callbacks you use in your program properly. See the documentation of the callback it tells you how to activate and configure it.
Usually this means that there is some kind of short circuit. More often than not this happens because of slightly bent pins in the Bricklet connector:
You can just bend them back again.
It is possible that there is a corrupted plugin or no plugin saved on the EEPROM of the Bricklet.
In this case, you should reflash the Bricklet plugin. If a Brick doesn't show up when the Bricklet is connected, you can connect the Bricklet after the Brick has started. Then update the Brick as described here.
If the flashing doesn't work: Have you tried a different Bricklet cable?
If the EEPROM on the Bricklet gets corrupted, it is also possible that the UID is invalidated. A UID of "1" is invalid. If you can read a UID of "1" with the Brick Viewer, you should set a new UID that is unique in your system and in Base58.
Short circuit in Bricklet connector:
A short circuit can be caused by a slightly bent pin in the Bricklet connector. See above. Please take a look at the connector of the Brick and Bricklet.
Defect Bricklet Cable:
If possible please test with another Bricklet cable.
Brick in bootloader:
It is possible that you accidentally brought your Brick in the bootloader mode. You can recognize this by the fact, that the LEDs aren't working anymore. In this case you need to reflash the Brick firmware.
Short circuit in Bricklet connector:
A short circuit can be caused by a slightly bent pin in the Bricklet connector. See above.
Brick Driver installation necessary:
Bricks need a driver installation on older Windows versions to work properly. Please see here.
Renesas/NEC USB 3.0 controller with old driver:
If your Brick is connected to a Renesas/NEC USB 3.0 controller (µPD720200) ensure that you have at least driver version 2.1.16 installed for this controller. Older driver versions have a bug that hinders brickd from seeing Bricks connected to such an USB controller.
Extension is below Master Brick:
Extensions have to be on top of the Master Brick. You can put other Bricks between the Master Brick and the Extension, but the Master Brick have to be the lowermost Brick (except of power supplies like Step-Down Power Supply).
Extension is not configured:
Connect a single Master Brick to your PC and open the Brick Viewer. After the Master Brick shows up in the Brick Viewer stick the Extension on it. Click on "Configure" and select Extension 0. Select the appropriate Extension Type and press "Save". Now restart the Master Brick, after restart the Master Brick Tab should show the Extension now.
Check the UID. You have to create the device object with the correct UID of the device, otherwise it can't answer because it didn't receive your request.
Is the Brick Daemon running? You can check in the list of processes if the Daemon is running (e.g. in the task manager on Windows).
If it isn't running but it is installed correctly, you can try to restart the service (Windows) or daemon (macOS and Linux). The service/daemon should also be started automatically on startup.
Did you use the IP address of the WIFI Extension? If you want to connect directly to the WIFI Extension, you have to use its IP address instead of "localhost".
If you expect to get a timeout (e.g. because a Brick or Bricklet is not connected) but you don't get one, you are probably calling a "setter". Normally a function that doesn't return anything will not wait for a response form a Brick or Bricklet.
It is however possible to configure it this way. See the SetResponseExpected function in the API documentation of each device.
The measurement is designed for high currents. If only a single Master Brick is connected to the Step-Down Power Supply it is possible that the little current that is drawn by the Master Brick doesn't get recognized at all (i.e. GetStackCurrent returns 0).
Brick not in bootloader:
A Brick can only be flashed if it's in bootloader mode. To enter the bootloader hold the Erase button, then press the Reset button 1x. The blue LED should be off now.
Driver not installed (on Windows):
On Windows you might need to install the Atmel driver atm6124_cdc.inf from the drivers subfolder in the Brick Viewer installation folder to make Windows detect a Brick in bootloader mode correctly.
Windows 7 and 8 typically auto detect a Brick as "GPS Camera Detect" serial device. This works as well, just select "GPS Camera Detect" as serial port in Brick Viewer.
Master Brick 2.0 in stack with Master Extension:
Master Brick hardware version 2.0 has a change in its PCB layout that interferes with bootloader mode if a Master Extension such as RS485, WIFI (2.0) or Ethernet is present in the stack. In this case the Master Extension needs to be disconnected from the stack to make the bootloader mode work correctly.
This problem was fixed in Master Brick hardware version 2.1.
/dev/ttyACM0 is not user-accessible (on Linux):
Serial devices might not be user-accessible on Linux. The device is listed in Brick Viewer, but an error is reported if you try to flash the Brick. As workaround start Brick Viewer as root.
Version < 2.0:
You probably have a version mismatch. On January 22nd 2013 we released a new protocol version, Protocol 2.0. This means that the way Bricks and Bricklets communicate with each other and with the Brick Daemon has changed. Also there are small changes in the API. You need to update your language Bindings, the Brick Daemon, the Brick Viewer and the Firmwares/Plugins of your Bricks/Bricklets to a version starting with "2".
To do this you can use the transitioning guide. It also describes how to port already existing code to the new protocol.
Brick Firmware Version < 2.3:
On November 26th 2014 we released a new SPI stack protocol to add support for the RED Brick. This protocol is not compatible to the old protocol. Please make sure that all Bricks have a firmware version greater or equal to 2.3, otherwise the stack communication might not work.