Code: Select all
[551317.793476] bone_capemgr bone_capemgr: part_number 'ADAFRUIT-UART1', version 'N/A'
[551317.801635] bone_capemgr bone_capemgr: slot #8: override
[551317.807161] bone_capemgr bone_capemgr: Using override eeprom data at slot 8
[551317.814283] bone_capemgr bone_capemgr: slot #8: 'Override Board Name,00A0,Override Manuf,ADAFRUIT-UART1'
[551317.830562] bone_capemgr bone_capemgr: slot #8: ADAFRUIT-UART1 conflict P9.24 (#4:cape-universala)
[551317.839832] bone_capemgr bone_capemgr: slot #8: Failed verification
Code: Select all
debian@beaglebone:~$ cat /sys/devices/platform/bone_capemgr/slots
0: PF---- -1
1: PF---- -1
2: PF---- -1
3: PF---- -1
4: P-O-L- 0 Override Board Name,00A0,Override Manuf,cape-universala
Code: Select all
import Adafruit_BBIO.UART as UART
import serial
UART.setup("UART1")
ser = serial.Serial(port = "/dev/ttyO1", baudrate=9600)
ser.close()
ser.open()
if ser.isOpen():
print "Serial is open!"
ser.write("Hello World!")
ser.close()
# Eventually, you'll want to clean up, but leave this commented for now,
# as it doesn't work yet
UART.cleanup()
Running with strace:debian@beaglebone:~$ sudo python ./uart.py
Serial is open!
sudo strace -o /tmp/log -f python ./uart.py
Looking at /tmp/log, I can see that it writes Hello World! to /dev/ttyO1:
Code: Select all
440 open("/sys/devices/platform/bone_capemgr/slots", O_RDWR|O_LARGEFILE) = 3
440 fstat64(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
440 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f31000
440 read(3, " 0: PF---- -1 \n 1: PF---- -1 \n"..., 4096) = 135
440 read(3, "", 4096) = 0
440 write(3, "ADAFRUIT-UART1", 14) = -1 EEXIST (File exists)
440 close(3) = 0
440 munmap(0xb6f31000, 4096) = 0
440 nanosleep({0, 200000000}, NULL) = 0
440 open("/dev/ttyO1", O_RDWR|O_NOCTTY|O_NONBLOCK|O_LARGEFILE) = 3
440 ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
440 ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
440 ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
440 ioctl(3, SNDCTL_TMR_START or SNDRV_TIMER_IOCTL_TREAD or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
440 ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
440 ioctl(3, TIOCMBIS, [TIOCM_DTR]) = 0
440 ioctl(3, TIOCMBIS, [TIOCM_RTS]) = 0
440 ioctl(3, TCFLSH, 0) = 0
440 pipe([4, 5]) = 0
440 pipe([6, 7]) = 0
440 fcntl64(4, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
440 fcntl64(6, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
440 close(3) = 0
440 close(5) = 0
440 close(4) = 0
440 close(7) = 0
440 close(6) = 0
440 open("/dev/ttyO1", O_RDWR|O_NOCTTY|O_NONBLOCK|O_LARGEFILE) = 3
440 ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
440 ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
440 ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
440 ioctl(3, SNDCTL_TMR_START or SNDRV_TIMER_IOCTL_TREAD or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
440 ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
440 ioctl(3, TIOCMBIS, [TIOCM_DTR]) = 0
440 ioctl(3, TIOCMBIS, [TIOCM_RTS]) = 0
440 ioctl(3, TCFLSH, 0) = 0
440 pipe([4, 5]) = 0
440 pipe([6, 7]) = 0
440 fcntl64(4, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
440 fcntl64(6, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
440 fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
440 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f31000
440 write(1, "Serial is open!\n", 16) = 16
440 write(3, "Hello World!", 12) = 12
440 select(7, [6], [3], [], NULL) = 1 (out [3])
440 close(3) = 0