bitbank2 / bb-cp Goto Github PK
View Code? Open in Web Editor NEWA faster replacement for FBTFT + FBCP
License: GNU General Public License v3.0
A faster replacement for FBTFT + FBCP
License: GNU General Public License v3.0
Any chance to implement using the new standard libgpiod interface?
Since Orange Pi Armbian (20.05? Kernel 5.4.x) has basically made TV-out's Framebuffer impossible to activate now, (also Notro's FBTFT is getting more difficult to work with because the DTB instructions are getting unwieldy, not to mention it's been "orphaned" in the mainline kernels) CVBS-only SBCs like OpiZero and NanoDuo are almost out of luck in using SPI LCDs.
However, if we compile our own customized kernels, could we activate the Virtual framebuffer (VFB) and use BB-CP from that frame buffer to the ili9341? The default resolution seems to be 640x480, and if I'm not mistaken BB-CP can reduce resolution from 640x480@16bpp?
I know this circumvents the Mali400 video processor in the h3/h2+, but it's better than nothing right now... unless someone knows of a recent distro that still maintains CVBS out?
All the blue colors are orange in OrangePiZero when using sudo ./bbcp --lcd_led 12 --spi_bus 1. I know that this is an orange pi :-)
Notro's fbtft supports an option bgr=1 to "flip" the blue colors back from orange/red. Without this option the blue colors are all red on the screen. This is what appears to be missing in the bbcp command. Could you please add this option or provide some hints on how to add this? Thanks.
BB-CP is using the undefined LCD_ORIENTATION_LANDSCAPE:
main.c: In function ‘InitDisplay’:
main.c:277:23: error: ‘LCD_ORIENTATION_LANDSCAPE’ undeclared (first use in this function)
spilcdSetOrientation(LCD_ORIENTATION_LANDSCAPE);
^~~~~~~~~~~~~~~~~~~~~~~~~
Where in spi_lcd only the following are defined:
spi_lcd.h:#define LCD_ORIENTATION_NATIVE 1
spi_lcd.h:#define LCD_ORIENTATION_ROTATED 2
Hi(again :P), i have manged to get the display working it was just a matter of recompiling :P but now i am stuck at launching it at boot :(
i added this at /etc/rc.local
sudo /boot/disp/BB-CP-master/bbcp --spi_bus 0 --lcd_dc 18--lcd_rst 22 spi_freq 46000000 --flip
it does show me whatever it is on the console but only that frame like once :P
Hi @bitbank2 ,
Thanks for pointing me to BB-CP yesterday. I'm able to have it working from the command line, no problem at all.
I've added this line to /etc/rc.local:
sudo /home/pi/BB-CP/bbcp --spi_bus 0 --background --flip
But it freezes the startup (somewhere around the Samba SMB setup). Have I missed something?
Thanks!
I have Segmentation fault error running in orange pi zero.
root@orangepizero:/BB-CP# ./bbcp --spi_bus 0 spi_freq 46000000 --flip --lcd_dc 0 --lcd_led 3 --lcd_rst 1/BB-CP# uname -a
Segmentation fault
root@orangepizero:
Linux orangepizero 4.14.14-sunxi #1 SMP Thu Jan 25 12:20:57 CET 2018 armv7l GNU/Linux
root@orangepizero:~/BB-CP# cat /boot/armbianEnv.txt
verbosity=1
logo=disabled
console=both
disp_mode=1920x1080p60
overlay_prefix=sun8i-h3
overlays=spi-spidev usbhost2 usbhost3
rootdev=UUID=a2c25aee-d15d-4aa7-8f41-ab6bb511776f
param_spidev_spi_bus=0
param_spidev_max_freq=100000000
rootfstype=ext4
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
root@orangepizero:~/BB-CP# ls /dev/spi*
/dev/spidev0.0
My wiring.
TFT OPIZERO
SCLK (SCK) - 23
MOSI (SDA) - 19
MISO - 21
CS - 24
DC (AO) - 13
RST - 11
VCC - 4
GND - 25
LED - 15
Regards.
Please help me! I a was wondering how to get this working with 240x240 Waveshare hat on Armbian? Please tell, I am getting pretty desperate trying to get it to work! Also, I am using a Banana Pi Zero
Hey!
Great work on this by the way.
I am trying to get this working on a NanoPi Duo2 but I cant seem to get them right, I looked at your mapping table in the spi_lcd.c file, chose NanoPi Duo2 as that has the same GPIO Pin out.
Any help where to map the final 2 pins of DC/X and Reset would be most helpful.
Thanks in advance.
Hi there ;
a few things are not evident from the readme
`root@ruao01:~/SPI_LCD/pigpio#
cat /etc/modprobe.d/fbtft.conf
options fbtft_device rotate=90 name=piscreen speed=16000000 gpios=reset:2,dc:71 txbuflen=32768 fps=25`
Which I translated as:
`root@ruao01:~/SPI_LCD/BB-CP#
./bbcp --spi_bus 0 --spi_freq 16000000 --lcd_rst 7 --lcd_dc 166`
But I get :
`root@ruao01:~/SPI_LCD/BB-CP#
>
> ./bbcp --spi_bus 0 --spi_freq 16000000 --lcd_rst 7 --lcd_dc 166
> Error setting SPI mode
> Error setting SPI speed
> Failed to open the SPI bus
> Error initializing the LCD/display`
>
As the result when trying to launch
Some general info/diags of the system under test follows:
`Linux
ruao01 4.14.67-sunxi #130 SMP Sun Sep 2 22:03:18 CEST 2018 armv7l armv7l armv7l GNU/Linux
root@ruao01:~/SPI_LCD/BB-CP# gpiodetect
gpiochip0 [1c20800.pinctrl] (224 lines)
gpiochip1 [1f02c00.pinctrl] (32 lines)
root@ruao01:~/SPI_LCD/BB-CP# gpioinfo
gpiochip0 - 224 lines:
line 0: unnamed unused input active-high
line 1: unnamed unused input active-high
line 2: unnamed "fb_ili9486" output active-high [used]
line 3: unnamed unused input active-high
line 4: unnamed unused input active-high
line 5: unnamed unused input active-high
line 6: unnamed unused input active-high
line 7: unnamed unused input active-high
line 8: unnamed unused input active-high
line 9: unnamed unused input active-high
line 10: unnamed unused input active-high
line 11: unnamed unused input active-high
line 12: unnamed unused input active-high
line 13: unnamed unused input active-high
line 14: unnamed unused input active-high
line 15: unnamed "orangepi:red:status" output active-high [used]
line 16: unnamed unused input active-high
line 17: unnamed unused input active-high
line 18: unnamed unused input active-high
line 19: unnamed unused input active-high
line 20: unnamed unused input active-high
line 21: unnamed unused input active-high
line 22: unnamed unused input active-high
line 23: unnamed unused input active-high
line 24: unnamed unused input active-high
line 25: unnamed unused input active-high
line 26: unnamed unused input active-high
line 27: unnamed unused input active-high
line 28: unnamed unused input active-high
line 29: unnamed unused input active-high
line 30: unnamed unused input active-high
line 31: unnamed unused input active-high
line 32: unnamed unused input active-high
line 33: unnamed unused input active-high
line 34: unnamed unused input active-high
line 35: unnamed unused input active-high
line 36: unnamed unused input active-high
line 37: unnamed unused input active-high
line 38: unnamed unused input active-high
line 39: unnamed unused input active-high
line 40: unnamed unused input active-high
line 41: unnamed unused input active-high
line 42: unnamed unused input active-high
line 43: unnamed unused input active-high
line 44: unnamed unused input active-high
line 45: unnamed unused input active-high
line 46: unnamed unused input active-high
line 47: unnamed unused input active-high
line 48: unnamed unused input active-high
line 49: unnamed unused input active-high
line 50: unnamed unused input active-high
line 51: unnamed unused input active-high
line 52: unnamed unused input active-high
line 53: unnamed unused input active-high
line 54: unnamed unused input active-high
line 55: unnamed unused input active-high
line 56: unnamed unused input active-high
line 57: unnamed unused input active-high
line 58: unnamed unused input active-high
line 59: unnamed unused input active-high
line 60: unnamed unused input active-high
line 61: unnamed unused input active-high
line 62: unnamed unused input active-high
line 63: unnamed unused input active-high
line 64: unnamed unused input active-high
line 65: unnamed unused input active-high
line 66: unnamed unused input active-high
line 67: unnamed unused input active-high
line 68: unnamed unused input active-high
line 69: unnamed unused input active-high
line 70: unnamed unused input active-high
line 71: unnamed "fb_ili9486" output active-high [used]
line 72: unnamed unused input active-high
line 73: unnamed unused input active-high
line 74: unnamed unused input active-high
line 75: unnamed unused input active-high
line 76: unnamed unused input active-high
line 77: unnamed unused input active-high
line 78: unnamed unused input active-high
line 79: unnamed unused input active-high
line 80: unnamed unused input active-high
line 81: unnamed unused input active-high
line 82: unnamed unused input active-high
line 83: unnamed unused input active-high
line 84: unnamed unused input active-high
line 85: unnamed unused input active-high
line 86: unnamed unused input active-high
line 87: unnamed unused input active-high
line 88: unnamed unused input active-high
line 89: unnamed unused input active-high
line 90: unnamed unused input active-high
line 91: unnamed unused input active-high
line 92: unnamed unused input active-high
line 93: unnamed unused input active-high
line 94: unnamed unused input active-high
line 95: unnamed unused input active-high
line 96: unnamed unused input active-high
line 97: unnamed unused input active-high
line 98: unnamed unused input active-high
line 99: unnamed unused input active-high
line 100: unnamed unused input active-high
line 101: unnamed unused input active-high
line 102: unnamed unused input active-high
line 103: unnamed unused input active-high
line 104: unnamed unused input active-high
line 105: unnamed unused input active-high
line 106: unnamed unused input active-high
line 107: unnamed unused input active-high
line 108: unnamed unused input active-high
line 109: unnamed unused input active-high
line 110: unnamed unused input active-high
line 111: unnamed unused input active-high
line 112: unnamed unused input active-high
line 113: unnamed unused input active-high
line 114: unnamed unused input active-high
line 115: unnamed unused input active-high
line 116: unnamed unused input active-high
line 117: unnamed unused input active-high
line 118: unnamed unused input active-high
line 119: unnamed unused input active-high
line 120: unnamed unused input active-high
line 121: unnamed unused input active-high
line 122: unnamed unused input active-high
line 123: unnamed unused input active-high
line 124: unnamed unused input active-high
line 125: unnamed unused input active-high
line 126: unnamed unused input active-high
line 127: unnamed unused input active-high
line 128: unnamed unused input active-high
line 129: unnamed unused input active-high
line 130: unnamed unused input active-high
line 131: unnamed unused input active-high
line 132: unnamed unused input active-high
line 133: unnamed unused input active-high
line 134: unnamed unused input active-high
line 135: unnamed unused input active-high
line 136: unnamed unused input active-high
line 137: unnamed unused input active-high
line 138: unnamed unused input active-high
line 139: unnamed unused input active-high
line 140: unnamed unused input active-high
line 141: unnamed unused input active-high
line 142: unnamed unused input active-high
line 143: unnamed unused input active-high
line 144: unnamed unused input active-high
line 145: unnamed unused input active-high
line 146: unnamed unused input active-high
line 147: unnamed unused input active-high
line 148: unnamed unused input active-high
line 149: unnamed unused input active-high
line 150: unnamed unused input active-high
line 151: unnamed unused input active-high
line 152: unnamed unused input active-high
line 153: unnamed unused input active-high
line 154: unnamed unused input active-high
line 155: unnamed unused input active-high
line 156: unnamed unused input active-high
line 157: unnamed unused input active-high
line 158: unnamed unused input active-high
line 159: unnamed unused input active-high
line 160: unnamed unused input active-high
line 161: unnamed unused input active-high
line 162: unnamed unused input active-high
line 163: unnamed unused input active-high
line 164: unnamed unused input active-high
line 165: unnamed unused input active-high
line 166: unnamed "cd" input active-high [used]
line 167: unnamed unused input active-high
line 168: unnamed unused input active-high
line 169: unnamed unused input active-high
line 170: unnamed unused input active-high
line 171: unnamed unused input active-high
line 172: unnamed unused input active-high
line 173: unnamed unused input active-high
line 174: unnamed unused input active-high
line 175: unnamed unused input active-high
line 176: unnamed unused input active-high
line 177: unnamed unused input active-high
line 178: unnamed unused input active-high
line 179: unnamed unused input active-high
line 180: unnamed unused input active-high
line 181: unnamed unused input active-high
line 182: unnamed unused input active-high
line 183: unnamed unused input active-high
line 184: unnamed unused input active-high
line 185: unnamed unused input active-high
line 186: unnamed unused input active-high
line 187: unnamed unused input active-high
line 188: unnamed unused input active-high
line 189: unnamed unused input active-high
line 190: unnamed unused input active-high
line 191: unnamed unused input active-high
line 192: unnamed unused input active-high
line 193: unnamed unused input active-high
line 194: unnamed unused input active-high
line 195: unnamed unused input active-high
line 196: unnamed unused input active-high
line 197: unnamed unused input active-high
line 198: unnamed unused input active-high
line 199: unnamed unused input active-high
line 200: unnamed unused input active-high
line 201: unnamed unused input active-high
line 202: unnamed unused input active-high
line 203: unnamed unused input active-high
line 204: unnamed "usb0_id_det" input active-high [used]
line 205: unnamed unused input active-high
line 206: unnamed unused input active-high
line 207: unnamed unused input active-high
line 208: unnamed unused input active-high
line 209: unnamed unused input active-high
line 210: unnamed unused input active-high
line 211: unnamed unused input active-high
line 212: unnamed unused input active-high
line 213: unnamed unused input active-high
line 214: unnamed unused input active-high
line 215: unnamed unused input active-high
line 216: unnamed unused input active-high
line 217: unnamed unused input active-high
line 218: unnamed unused input active-high
line 219: unnamed unused input active-high
line 220: unnamed unused input active-high
line 221: unnamed unused input active-high
line 222: unnamed unused input active-high
line 223: unnamed unused input active-high
gpiochip1 - 32 lines:
line 0: unnamed unused input active-high
line 1: unnamed unused input active-high
line 2: unnamed "usb0-vbus" output active-high [used]
line 3: unnamed unused input active-high
line 4: unnamed unused input active-high
line 5: unnamed unused input active-high
line 6: unnamed unused input active-high
line 7: unnamed "reset" output active-low [used]
line 8: unnamed unused input active-high
line 9: unnamed unused input active-high
line 10: unnamed "orangepi:green:pwr" output active-high [used]
line 11: unnamed unused input active-high
line 12: unnamed unused input active-high
line 13: unnamed unused input active-high
line 14: unnamed unused input active-high
line 15: unnamed unused input active-high
line 16: unnamed unused input active-high
line 17: unnamed unused input active-high
line 18: unnamed unused input active-high
line 19: unnamed unused input active-high
line 20: unnamed unused input active-high
line 21: unnamed unused input active-high
line 22: unnamed unused input active-high
line 23: unnamed unused input active-high
line 24: unnamed unused input active-high
line 25: unnamed unused input active-high
line 26: unnamed unused input active-high
line 27: unnamed unused input active-high
line 28: unnamed unused input active-high
line 29: unnamed unused input active-high
line 30: unnamed unused input active-high
line 31: unnamed unused input active-high
root@ruao01:~/SPI_LCD/BB-CP# gpioinfo |grep "\[used"
line 2: unnamed "fb_ili9486" output active-high [used]
line 15: unnamed "orangepi:red:status" output active-high [used]
line 71: unnamed "fb_ili9486" output active-high [used]
line 166: unnamed "cd" input active-high [used]
line 204: unnamed "usb0_id_det" input active-high [used]
line 2: unnamed "usb0-vbus" output active-high [used]
line 7: unnamed "reset" output active-low [used]
line 10: unnamed "orangepi:green:pwr" output active-high [used]
root@ruao01:~/SPI_LCD/BB-CP# modprobe ads
ads1015 ads7828 ads7846_device ads7871
root@ruao01:~/SPI_LCD/BB-CP# modprobe ads7846_device
root@ruao01:~/SPI_LCD/BB-CP# gpioinfo |grep "\[used"
line 1: unnamed "ads7846_pendown" input active-high [used]
line 2: unnamed "fb_ili9486" output active-high [used]
line 15: unnamed "orangepi:red:status" output active-high [used]
line 71: unnamed "fb_ili9486" output active-high [used]
line 166: unnamed "cd" input active-high [used]
line 204: unnamed "usb0_id_det" input active-high [used]
line 2: unnamed "usb0-vbus" output active-high [used]
line 7: unnamed "reset" output active-low [used]
line 10: unnamed "orangepi:green:pwr" output active-high [used]
root@ruao01:~/SPI_LCD/BB-CP#`
The spi screen I am using is this one:
https://www.waveshare.com/3.5inch-rpi-lcd-a.htm
How can i install this?
Since all parameters are same as default for my setup, there is no need to pass parameters. BB-CP prints help and exits.
Suggested solution would be to follow Linux standard and print help only with '-h' or '--help' options.
Request to support signal handling. This would allow the application (launched during boot) to be cleanly closed if needed.
Currently applications exits and error message is printed
DATECODE sigHandler: Unhandled signal 2, terminating
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.